基本语法
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
类型的一部分。 -
never
let 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 代码中定义和使用类。要了解有关类的更多信息,请参阅类文档页面 。