typeScript基础(5)_对象的类型-interfaces接口

简介: 本文介绍了TypeScript中接口(interfaces)的基本概念和用法,包括如何定义接口、接口的简单使用、自定义属性、以及如何使用`readonly`关键字定义只读属性。接口在TypeScript中是定义对象形状的重要方式,可以规定对象的必有属性、可选属性、自定义属性和只读属性。

接口类型

使用interfaces来给对象定义类型,接口interfaces是对行为的抽象,而具体如何行动需要类来实现implement。

TypeScript 中的接口是一个非常灵活的概念,除了可用于对类的一部分行为进行抽象以外,也常用于对「对象的形状(Shape)」进行描述。

For example :

接口简单使用

//接口简单使用
interface MySelf {
   
    name: string,
    age: number,
    habby: number[],
    runing?: boolean,//可选参数
}

var obj: MySelf = {
   
    name: "zjq",
    age: 18,
    habby: [1, 2, 3]
}
var obj: MySelf = {
   
    name: "zjq",
    age: 18,
    habby: [1, 2, 3],
    runing:true
}

给obj赋值了MySelf 类型,里面可以对三个属性进行了约束,另外一个runing是可选属性,用的话必须是布尔类型才可以。

自定义属性

//自定义属性
interface NewMySelf {
   
    name: string,
    age: number,
    habby: number[],
    runing?: boolean,//可选参数
    [propName: string]: string | boolean | number | number[] //需要包含上述所有类型  使用联合类型  |
}
var newmyself: NewMySelf = {
   
    name: "zjq",
    age: 18,
    habby: [1, 2, 3, 4],
    runing: true,
    zjq: 'zjjq',
    zrh: "888"
}

[propName: string]: string | boolean | number | number[] //需要包含上述所有类型 使用联合类型 |

只读属性:readonly

interface ReadonlyS {
   
    readonly name: string,
    age: number,
    habby: number[],
    runing?: boolean,//可选参数
    [propName: string]: string | boolean | number | number[] //需要包含上述所以类型  使用联合类型  |
}
//添加readonly后,首次声明变量时没加name属性也会报错。
var shop: ReadonlyS = {
   
    name: "zjq",
    age: 18,
    habby: [1, 2, 3, 4],
    runing: true,
    zjq: 'zjjq',
}
// shop.name = '000'   //会报错提示  是只读属性 。

只读属性只能在第一次给ReadonlyS 类型的对象赋值时就给定name属性,否则就会报错,再次添加属性赋值也会报错。

总结:innterfaces是为了规范对象的参数,可以规定对象的必有属性、可选属性、自定义属性、只读属性。

参考:https://www.bookstack.cn/read/typescript-tutorial-202005/basics-type-of-object-interfaces.md

目录
相关文章
|
2天前
|
JavaScript
typeScript进阶(9)_type类型别名
本文介绍了TypeScript中类型别名的概念和用法。类型别名使用`type`关键字定义,可以为现有类型起一个新的名字,使代码更加清晰易懂。文章通过具体示例展示了如何定义类型别名以及如何在函数中使用类型别名。
13 1
typeScript进阶(9)_type类型别名
|
2天前
|
JavaScript
typeScript基础(2)_any任意值类型和类型推论
本文介绍了TypeScript中的`any`任意值类型,它可以赋值为其他任何类型。同时,文章还解释了TypeScript中的类型推论机制,即在没有明确指定类型时,TypeScript如何根据变量的初始赋值来推断其类型。如果变量初始化时未指定类型,将被推断为`any`类型,从而允许赋予任何类型的值。
16 4
|
2天前
|
JavaScript 前端开发
typeScript基础(8)_ts类型断言
本文介绍了TypeScript中的类型断言,它用于在编译时告诉TypeScript某个对象具有特定的类型,即使它看起来不具备。类型断言可以用来访问一个类型上存在而另一个类型上不存在的属性或方法。需要注意的是,类型断言并不会在运行时改变JavaScript的行为,因此如果断言不当,运行时仍然可能出错。文章还提醒避免将类型断言为`any`类型或进行多重断言。
10 1
|
2天前
|
JavaScript
typeScript基础(6)_数组类型
本文介绍了TypeScript中数组的类型表示方法,包括直接使用类型加`[]`定义数组类型,以及使用数组泛型`Array<类型>`定义数组。同时,还展示了如何定义包含多种数据类型的数组。
12 1
|
2天前
|
存储 JavaScript
typeScript进阶(11)_元组类型
本文介绍了TypeScript中的元组(Tuple)类型,它是一种特殊的数组类型,可以存储不同类型的元素。文章通过示例展示了如何声明元组类型以及如何给元组赋值。元组类型在定义时需要指定数组中每一项的类型,且在赋值时必须满足这些类型约束。此外,还探讨了如何给元组类型添加额外的元素,这些元素必须符合元组类型中定义的类型联合。
12 0
|
2天前
|
JavaScript
typeScript进阶(10)_字符串字面量类型
本文介绍了TypeScript中的字符串字面量类型,这种类型用来限制变量只能是某些特定的字符串字面量。通过使用`type`关键字声明,可以确保变量的值限定在预定义的字符串字面量集合中。文章通过示例代码展示了如何声明和使用字符串字面量类型,并说明了它在函数默认参数中的应用。
12 0
|
2天前
|
JavaScript
typeScript基础(7)_函数的类型
本文介绍了TypeScript中函数的类型,包括函数声明与函数表达式的类型注解,如何定义函数的参数类型、返回类型,以及可选参数和参数默认值。还探讨了函数的剩余参数、如何使用接口定义函数的形状,以及函数重载的概念和实践。
8 0
|
2月前
|
前端开发 JavaScript 安全
TypeScript在React Hooks中的应用:提升React开发的类型安全与可维护性
【7月更文挑战第17天】TypeScript在React Hooks中的应用极大地提升了React应用的类型安全性和可维护性。通过为状态、依赖项和自定义Hooks指定明确的类型,开发者可以编写更加健壮、易于理解和维护的代码。随着React和TypeScript的不断发展,结合两者的优势将成为构建现代Web应用的标准做法。
|
1月前
|
JavaScript
TypeScript——不能将类型“HTMLElement | null”分配给类型“HTMLElement”
TypeScript——不能将类型“HTMLElement | null”分配给类型“HTMLElement”
30 4
|
27天前
|
JavaScript 前端开发 编译器
Angular 与 TypeScript 强强联手太厉害啦!强类型编程带来巨大开发优势,快来一探究竟!
【8月更文挑战第31天】作为一名前端开发者,我致力于探索各种技术框架以提升开发效率与代码质量。近期深入研究了Angular与TypeScript的结合,体验到强类型编程带来的显著优势。Angular是一款强大的前端框架,而TypeScript则是由微软开发的一种强类型语言,为JavaScript增添了静态类型检查等功能。
23 0