TypeScript 是 JavaScript 的一个超集,它添加了静态类型检查、类、接口等语言特性,并且可以编译成纯 JavaScript 代码。它的目的是为了在大型 JavaScript 项目中提高代码的可维护性和可读性。本文将重点介绍 TypeScript 中的对象类型和函数类型。
对象类型
对象类型是 TypeScript 中最常用的类型之一,它可以描述一个对象的结构和属性。
基本语法
定义一个对象类型的语法如下:
type Person = { name: string; age: number; gender?: 'male' | 'female'; }
其中 type
关键字用来定义一个新的类型别名,Person
就是一个新的对象类型。它包括了三个属性,name
和 age
必须存在,gender
可以存在也可以不存在,如果存在的话只能是 'male'
或 'female'
。
使用对象类型时,我们可以先定义一个对象,然后将其赋值给一个变量:
const person: Person = { name: 'Tom', age: 18, gender: 'male', };
此时,TypeScript 会检查这个对象是否符合定义的对象类型。如果对象的属性和类型不匹配,就会报错。
可选属性和只读属性
除了上面提到的可选属性,对象类型还支持只读属性。
定义一个只读属性:
type Point = { readonly x: number; readonly y: number; }
在定义对象的时候,只读属性必须被初始化,之后就无法修改它的值:
const p: Point = { x: 0, y: 0, }; // Error: Cannot assign to 'x' because it is a read-only property. p.x = 1;
嵌套对象类型
对象类型可以嵌套使用。例如下面定义一个学生类型:
-- -------------------- ---- ------- ---- ------- - - ----- ------- ---- ------- ------- ------ - --------- -------- - ----- ------- ------- ------- -------- ------- -- -
使用时,我们可以先定义一个地址对象,然后将其作为学生对象的一个属性:
-- -------------------- ---- ------- ----- ------- - - ----- ----------- ------- -------- ------ -------- --------- -- ----- -------- ------- - - ----- ------ ---- --- ------- ------- -------- --
函数类型
函数类型可以描述函数的参数类型和返回值类型。
基本语法
定义一个函数类型的语法如下:
type Add = (a: number, b: number) => number;
在这个例子中,我们定义了一个新的类型别名 Add
,它表示接受两个 number
类型的参数并返回一个 number
类型的值的函数。我们可以将它定义为一个函数:
const add: Add = (a, b) => a + b;
这个函数通过了 TypeScript 的类型检查。
可选参数和默认参数
函数类型还支持可选参数和默认参数。例如下面定义一个 printInfo
函数:
type PrintInfo = (name: string, age?: number, gender?: string) => void; const printInfo: PrintInfo = (name, age = 0, gender = 'unknown') => { console.log(`Name: ${name}, Age: ${age}, Gender: ${gender}`); };
这个函数接受一个必须的 name
参数,一个可选的 age
参数和一个有默认值的 gender
参数。使用时,我们可以只传递必须的参数,也可以传递所有参数:
printInfo('Tom'); // Name: Tom, Age: 0, Gender: unknown printInfo('Jerry', 20, 'male'); // Name: Jerry, Age: 20, Gender: male
剩余参数
函数类型还支持剩余参数。例如下面定义一个 sum
函数:
type Sum = (...args: number[]) => number; const sum: Sum = (...args) => { return args.reduce((a, b) => a + b); };
这个函数接受任意数量的 number
类型的参数,并返回它们的和。使用时,我们可以传递任意数量的参数:
sum(); // 0 sum(1); // 1 sum(1, 2); // 3 sum(1, 2, 3); // 6
总结
本文介绍了 TypeScript 中的对象类型和函数类型的基本语法和用法。对象类型可以描述一个对象的结构和属性,函数类型可以描述函数的参数类型和返回值类型。了解这些内容可以使你更好地使用 TypeScript 并提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64cdf3c3b5eee0b5255e7554