简介
Typescript支持与Javascript几乎一样的数据类型:布尔值、数字、字符串,结构体等,此外Typescript还提供了很实用的枚举类型。
Boolean(布尔值)
let isDone: boolean = false;
Number(数字)
和Javascript一样,Typescript中的数字都是浮点数。
Typescript中的数字支持二进制、八进制、十进制、十六进制。
let binary: number = 0b1010;
let octal: number = 0o744;
let decimal: number = 6;
let hex: number = 0xf00d;
String(字符串)
单双引号都可以,
let name: string = "bob";
name = 'smith';
支持跟C#一样的内嵌表达式,即使用反引号`包围内嵌字符串,然后以${}的方式嵌入变量:
let name: string = `Gene`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ name }.
I'll be ${ age + 1 } years old next month.`
Array(数组)
let list: number[] = [1, 2, 3];
或者这样定义:
let list: Array<number> = [1, 2, 3];
Tuple(元组)
跟python中的元祖一样,当然跟C#中的元组更像(因为有元素的类型声明):
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ['hello', 10]; // OK
// Initialize it incorrectly
x = [10, 'hello']; // Error
Enum(枚举)
enum Color {Red, Green, Blue};
let c: Color = Color.Green;
枚举默认是从0开始为元素编号,也可以手动指定成员的数值:
enum Color {Red = 1, Green, Blue};
let c: Color = Color.Green;
或者全部指定元素编号:
enum Color {Red = 1, Green = 2, Blue = 4};
let c: Color = Color.Green;
可以通过枚举值获得枚举的名字:
enum Color {Red = 1, Green, Blue};
let colorName: string = Color[2];
alert(colorName); // Green
Any(任意类型)
通常为那些在编程阶段还不能够确认数据类型的变量指定为Any类型。这些值可以来自动态内容,比如用户输入或是第三方库。
这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译时的检查。
这时候可以使用 any
类型:
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
你可能觉得 any
与 Object
的作用一样。但是,实际并不是这样。
你的确可以给 Object
类型赋任何类型的值,然后你却不能在它上面调用任意方法(即使那个对象真的有这些方法)! 但是Any类型可以!
let notSure: any = 4;
notSure.ifItExists(); // okay, ifItExists might exist at runtime
notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check)
let prettySure: Object = 4;
prettySure.toFixed(); // Error: Property 'toFixed' doesn't exist on type 'Object'.
当你只知道一部分数据的类型的时候, any
类型也很有用。比如你有一个数组,数组内包含不同类型(如果类型全都知道,可是用Tuple):
let list: any[] = [1, true, "free"];
list[1] = 100;
Void(空类型)
void
有点类似于 any
的反义词: 它表示没有任何类型。通常用在没有返回值的方法:
function warnUser(): void {
alert("This is my warning message");
}
声明一个 void
类型的变量没啥用,因为你只能给它赋值 undefined
或是 null
:
let unusable: void = undefined;
关于let
let
是Javascript新添加的一个关键字,功能了var
类似,但是它们的作用域不一样(详细自己查)。let
更像是其他语言中定义变量的关键字,所以尽量用let
来替代var
。
注:原内容来自github上的官方Handbook,这里我只是做了精简加翻译。
写这个的目的是作为学习Typescript的笔记,当然发出来也是为了分享给对Typescript感兴趣的同学。学Typescript,最好有编程语言基础,最好是学过Javascript或是C#。
另外:这里有人翻译的完整版。