原始数据类型
JavaScript 的类型分为两种:原始数据类型(Primitive data types)和对象类型(Object types)。原始数据类型包括:布尔值、数值、字符串、null、undefined 以及 ES6 中的新类型 Symbol
let tom:string="tom"//这是声明一个字符串变量
let jack:number=999 //这是声明一个数字类型的变量
let chen:null=null//这是声明一个null类型的变量
let you:undefined=undefined //这是声明一个undefined类型的变量
let he:Symbol=Symbol(123131) //这是声明一个Symbol类型的变量
let her:boolean=true; //这是声明一个boolean类型的变量
编译之后的代码:
var tom = "tom"; //这是声明一个字符串变量
var jack = 999; //这是声明一个数字类型的变量
var chen = null; //这是声明一个null类型的变量
var you = undefined; //这是声明一个undefined类型的变量
var he = Symbol(123131); //这是声明一个Symbol类型的变量
var her = true; //这是声明一个boolean类型的变量
javaScript 没有空值(Void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函数:
function alertName(): void {
alert('My name is Tom');
}
声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null:
let unusable: void = undefined;
与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量:
联合类型
联合类型(Union Types)表示取值可以为多种类型中的一种。
let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;
function getLength(something: string | number): number {
return something.length;
}
// index.ts(2,22): error TS2339: Property 'length' does not exist on type 'string | number'.
// Property 'length' does not exist on type 'number'.
类型断言
类型断言(Type Assertion)可以用来手动指定一个值的类型。在确定自己比 TS 更准确的知道类型时,可以使用类型断言来绕过 TS 的检查,改造旧代码很有效,但是防止滥用。
bar: number
}
let foo = {} as Bar
foo.bar = 1
// 但是推荐变量声明时就要指定类型
let foo1: Bar = {
bar: 1
}