一、基础类型
布尔值let isDone: boolean = false;
数字let decLiteral: number = 6;
字符串let name: string = "bob";
数组let list: number[] = [1, 2, 3];
元组 Tuplelet x: [string, number]; x = [‘hello‘, 10];
枚举(enumeration [??nju?m??re??n])enum Color {Red, Green, Blue} let c: Color = Color.Green; //1 let d: string = Color[1]; //Green
Anylet notSure: any = 4; notSure = "maybe a string instead"; notSure = false; // okay, definitely a boolean
跟object不一样,any的话可以调用里面的方法,object只能读取属性
Voidfunction warnUser(): void { console.log("This is my warning message"); } // 函数没有返回值
let unusable: void = undefined; //void只能变成null / undefined
Null 和 Undefinedlet u: undefined = undefined; let n: null = null;
Never
never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型
never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never。
`
// 返回never的函数必须存在无法达到的终点`
function error(message: string): never {
throw new Error(message);
}// 推断的返回值类型为never
function fail() {
return error("Something failed");
}// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) {
}
}
Object
object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
使用object类型,就可以更好的表示像Object.create这样的API。例如:
`
`
declare function create(o: object | null): void;create({ prop: 0 }); // OK
create(null); // OKcreate(42); // Error
create("string"); // Error
create(false); // Error
create(undefined); // Error
类型断言
类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。 TypeScript会假设你,程序员,已经进行了必须的检查。
类型断言有两种形式。 其一是“尖括号”语法:<pre> let someValue: any = "this is a string"; let strLength: number = (<string>someValue).length; </pre>
另一个为as语法:<pre> let someValue: any = "this is a string"; let strLength: number = (someValue as string).length; </pre>