跳到主要内容

理解 TypeScript 中的类型注释

摘要: 在本教程中,你将了解 TypeScript 中的类型注释。

什么是 TypeScript 中的类型注释

TypeScript 使用类型批注来显式指定标识符的类型,如变量、函数、对象等。

TypeScript 在标识符后使用语法 :type 作为类型注释,其中 type 可以是任何有效的类型。

一旦一个标识符被标注了类型,它就只能作为该类型使用。如果它被用作另一种类型,TypeScript 编译器会触发错误。

在变量和常量中使用类型注释

以下语法显示了如何为变量和常量指定类型注释:

let variableName: type;
let variableName: type = value;
const constantName: type = value;

在此语法中,类型注释位于变量或常量名称之后,前面有一个冒号(:)。

以下示例对一个变量使用了 number 注释:

let counter: number;

此后,你只能为 counter 变量赋值一个数字:

counter = 1;

如果你给 counter 变量赋值一个字符串,会得到一个错误信息:

let counter: number;
counter = 'Hello'; // compile error

报错:

Type '"Hello"' is not assignable to type 'number'.

你可以在一条语句中同时为一个变量指定类型和初始化赋值,如下所示:

let counter: number = 1;

在这个例子中,我们对 counter 变量使用了 number 注释,并将其初始化为 1

下面显示了基本类型注释的其他示例:

let name: string = 'John';
let age: number = 25;
let active: boolean = true;

在本例中,name 变量获得 string 类型,age 变量获得 number 类型,active变量获得 boolean 类型。

类型注释示例

数组

若要注释你使用的数组类型,请使用某个类型然后加上一对方括号: type[]

let arrayName: type[];

例如,下面声明了一个字符串数组:

let names: string[] = ['John', 'Jane', 'Peter', 'David', 'Mary'];

对象

要指定对象的类型,可以使用对象类型注释。例如:

let person: {
name: string;
age: number
};

person = {
name: 'John',
age: 25
}; // valid

在本例中,person 对象只接受两个属性: string类型的 namenumber 类型的 age

函数参数和返回值的类型

下面显示了带有参数类型注释和返回类型注释的函数注释:

let greeting : (name: string) => string;

在此示例中,你可以将任何接受字符串并返回字符串的函数分配给 greeting 变量:

greeting = function (name: string) {
return `Hi ${name}`;
};

由于赋给 greeting 变量的函数与其函数类型不匹配,下面的代码会触发一个错误。

greeting = function () {
console.log('Hello');
};

错误:

Type '() => void' is not assignable to type '(name: string) => string'. Type 'void' is not assignable to type 'string'.

摘要

  • 使用类型注释语法 : [type] 来显式指定变量、函数、函数返回值等的类型。