# 类型注释

原文地址 (opens new window)

在本教程中,你将学习 TypeScript 中的类型注释。

# TypeScript 中的类型注释是什么

TypeScript 使用类型注释显式地为变量,函数和对象等标识符指定类型。TypeScript 中的类型注释语法是在标识符后面添加 : type 标识,其中 type 可以是任何有效的类型。一旦标识符被声明为某种类型,那它在使用的时候只能是那种类型,如果以其他类型来使用,TypeScript 编译器会抛出一个错误提示。

# 变量和常量中的类型注释

下面是给变量和常量指定类型注释的语法:

let variableName: type;
let variableName: type = value;
const constantName: type = value;
1
2
3

在这个语法中,类型注释跟在变量或者常量名之后,前面是一个冒号 (:)。

下面例子中的变量使用了 数字 类型注释:

let counter: number;
1

在这之后,你只能给 counter 变量赋值一个数字:

counter = 1;
1

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

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

错误提示:

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

可以在一条语句中给变量添加类型注释的同时进行变量初始化操作,如下所示:

let counter: number = 1;
1

在这里例子中,我们给 counter 变量添加数字类型注释的时候把它初始化为 1

下面是添加其他原始类型注释的例子:

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

在这个例子中, 为 name 变量添加了 字符串 类型注释,为 age 变量添加了 数字 类型注释,为 active 变量添加了 布尔值 类型注释

# 类型注释例子

# 数组

数组类型 的变量添加类型注释,需要使用一个特定的类型:它的后面跟着一个方括号 : type[] 标识:

let arrayName: type[];
1

比如下面的例子声明了一个字符串数组:

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

# 对象

为一个对象指定类型,使用对象类型注释,如下所示:

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

person = {
  name: 'John',
  age: 25,
}; // 合法的
1
2
3
4
5
6
7
8
9

在这个例子中,person 对象只接受具有两个指定属性的对象:一个是类型为 string 名为 name 的属性,另外一个是类型为 number 名为 age 的属性。

# 函数参数和返回类型

下面展示了一个带有参数类型注释和返回类型注释的函数注释语法:

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

这个例子中你可以给 greeting 赋值一个函数,这个函数带有一个类型为字符串的参数,并且它的返回类型也是字符串:

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

下面的例子由于分配给 greeting 变量的函数和它的 函数 类型注释不匹配,会抛出一个错误提示:

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

错误提示:

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

# 小结

  • 使用语法为 : [type] 的类型注释方式,显式地给一个变量,函数或者函数返回值指定类型。