基本语法
TypeScript 是 JavaScript 的类型超集,这意味着所有 JavaScript 代码都是有效的 TypeScript 代码。TypeScript 在此基础上添加了许多新功能。
TypeScript 使 JavaScript 更像是一种强类型,面向对象的语言,类似于 C#和 Java。这意味着 TypeScript 代码往往更容易用于大型项目,并且代码往往更容易理解和维护。强类型还意味着语言可以(并且是)预编译,并且不能为变量分配超出其声明范围的值。例如,当 TypeScript 变量声明为数字时,你无法为其指定文本值。
这种强大的键入和面向对象使 TypeScript 更易于调试和维护,这些是标准 JavaScript 中最弱点的两个。
输入声明
你可以向变量,函数参数和函数返回类型添加类型声明。类型是在变量名后跟冒号后写的,如下所示:var num: number = 5; 编译器将在编译期间检查类型(如果可能)并报告类型错误。
var num: number = 5;
num = "this is a string"; // error: Type 'string' is not assignable to type 'number'.
基本类型是:
-
number(整数和浮点数) -
string -
boolean -
Array。你可以指定数组元素的类型。定义数组类型有两种等效方法:Array<T>和T[]。例如:number[]- 数组Array<string>- 字符串数组
-
元组。元组具有固定数量的具有特定类型的元素。
[boolean, string]- 元组,其中第一个元素是布尔值,第二个元素是字符串。[number, number, number]- 三个数字的元组。
-
{}- 对象,你可以定义其属性或索引器{name: string, age: number}- 具有名称和年龄属性的对象{[key: string]: number}- 由字符串索引的数字字典
-
enum-{ Red = 0, Blue, Green }- 映射到数字的枚举 -
功能。你可以为参数和返回值指定类型:
(param: number) => string- 函数取一个数字参数返回字符串() => number- 没有参数返回数字的函数。(a: string, b?: boolean) => void- 函数接受一个字符串,也可以选择一个没有返回值的布尔值。
-
any- 允许任何类型。涉及any的表达式未经过类型检查。 -
void- 表示无,可用作函数返回值。只有null和undefined是void类型的一部分。 -
neverlet foo: never;-作为类型保护下永远不变的变量类型。function error(message: string): never { throw new Error(message); }- 作为永不返回的函数的返回类型。
-
null- 类型为null。除非启用了严格的空检查,否则null是每个类型的隐式部分。
铸件
你可以通过尖括号执行显式转换,例如:
var derived: MyInterface;
(<ImplementingClass>derived).someSpecificMethod();
此示例显示了 derived 类,编译器将其视为 MyInterface。如果没有在第二行上进行转换,编译器会抛出异常,因为它不了解 someSpecificMethod(),但是通过 <ImplementingClass>derived 进行转换会建议编译器做什么。
在 Typescript 中投射的另一种方法是使用 as 关键字:
var derived: MyInterface;
(derived as ImplementingClass).someSpecificMethod();
从 Typescript 1.6 开始,默认使用 as 关键字,因为在 .jsx 文件中使用 <> 是不明确的。这在 Typescript 官方文档中提到。
类
可以在 TypeScript 代码中定义和使用类。要了解有关类的更多信息,请参阅类文档页面 。