TypeScript的主要特征之一是添加类型信息,也因此得名。这种类型信息可以帮助JavaScript程序变得更易预测和推断。
类型让开发者编写更明确的“契约”。换句话说,函数签名之类的东西更加明确。
未使用TS:
function add(a, b) {
return a + b;
}
add(1, 3); // 4
add(1, '3'); // '13'
使用TS:
function add(a: number, b: number) {
return a + b;
}
add(1, 3); // 4
// 编译器会在运行JS之前报错
add(1, '3'); // '13'
使用npm安装TypeScript转换器:
$ tsc test.ts
$ node test.js
然后使用tsc
手动将TypeScript源文件编译为ES5:
$ tsc test.ts
$ node test.js
关于ES6示例
我们早期的ES6类现在不会编译。 TypeScript比ES6更苛刻,它需要声明实例属性:
class Pizza {
toppings: string[];
constructor(toppings: string[]) {
this.toppings = toppings;
}
}
注意,现在我们已经声明toppings
是一个字符串数组,TypeScript将强制这样做。 如果我们尝试为它分配一个数字,我们将在编译时收到一个错误。
如果你想让一个属性的值可以设置为任何类型,你只需声明其类型为“any”:
class Pizza {
toppings: any;
//...
}
下一节:到目前为止tsc已用于编译单个文件。通常,程序会有多个文件进行编译。值得庆幸的是tsc可以处理多个文件作为参数。