TS数据类型--自定义数据类型

  1. 什么是自定义类型

当基本的数据类型满足不了我们的需求的时候,我们就可以自己定义一个数据类型(这种方式有点像C语言的结构体)。自定义类型使用关键字interface来定义

  1. 实例
interface Person{
    name: string;
    age: number;
}

let tom: Person = {
	name: 'Tom',
    age: 18
}

注意:定义的接口名首字母一般大写;这样定义的变量的属性值不能少于或多于对应的接口的属性值

  1. 接口的可选属性

当我们希望定义的变量的属性要少于对应的接口的属性的时候,就可以启用接口的可选属性

interface Person{
    name: string;
    age?: number;
}

let tom: Person = {
	name: 'Tom',
}

启用可选属性非常简单,只需在对应的属性后面加上问号即可,这时定义的变量可以没有这个可选属性

  1. 接口的任意属性

有时候我们希望一个接口允许有任意的属性,可以这样做

interface Person{
    name: string;
    age?: number;
    [propName: string]: any;
}

let tom: Person = {
	name: 'Tom',
    gender: 'male'
}

使用 [propName: string] 定义了任意属性并取 string 类型的值。

注意:一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集:

interface Person{
    name: string;
    age?: number;
    [propName: string]: string;
}

let tom: Person = {
	name: 'Tom',
    gender: 'male'
}

上例会报错,任意属性的值允许是string,但可选属性的age的值却是number,number不是string的子属性,所以报错

一个接口中只能定义一个任意属性。如果接口中有多个类型的属性,则可以在任意属性中使用联合类型:

interface Person{
    name: string;
    age?: number;
    [propName: string]: string | number;
}
  1. 只读属性

有时候我们希望某些属性只能在定义的时候被赋值,那么我们可以把这个属性定义为只读属性

只读属性使用关键字readonly

interface Person{
    readonly id: number;
    name: string;
    age?: number;
    [propName: string]: string | number;
}

let tom: Person = {
    id: 00001,
	name: 'Tom',
    gender: 'male'
}

此后就不能再对tom的id属性进行修改

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 3.x 版本引入了 TypeScript 支持,使得在 Vue 项目中使用 TypeScript 更加方便和类型安全。要创建一个自定义的 Vue 组件并使用 TypeScript,你可以按照以下步骤操作: 1. **设置项目配置**: 首先,确保你的项目已经安装了 Vue CLI 3 或更高版本,并配置了 TypeScript。运行 `vue create your-project` 并选择 TypeScript 作为构建工具。 2. **创建组件文件**: 在 `src/components` 目录下,创建一个新的 TypeScript 文件,例如 `MyCustomTag.vue.ts`。这里使用`.ts`后缀表示这是一个 TypeScript 文件。 3. **组件接口声明**: 在组件文件顶部,声明组件的接口。这有助于类型检查: ```typescript import { Component, Prop } from 'vue'; export interface MyCustomTagProps { // 定义 props(属性) message: string; } export default class MyCustomTag extends Component<MyCustomTagProps> { // ... } ``` 4. **定义组件结构**: 在组件内部,你可以定义模板、数据以及方法。注意在模板中使用 prop 的时候要加上类型提示: ```html <template> <div :message="message" class="my-custom-tag">{{ message }}</div> </template> <script lang="ts"> // ... export default { // ... props: { message: { type: String, required: true, }, }, // ... }; </script> ``` 5. **编译和使用**: 保存文件后,Vue CLI 会自动编译 TypeScript 代码。在其他 Vue 文件中,你可以像使用标准组件一样导入并使用这个自定义标签: ```html <template> <my-custom-tag :message="customMessage" /> </template> <script> import MyCustomTag from '@/components/MyCustomTag.vue'; export default { components: { MyCustomTag, }, data() { return { customMessage: 'Hello, Vue3 with TypeScript!', }; }, }; </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值