目录
2.数字 number--> ts里所有数字都是浮点数,这些浮点数的类型是 number
3.字符串 string-->文本数据类型,可以使用双引号“aaa” 或单引号‘aaa’表示
6.enum枚举--> 像C#等语言一样,枚举类型可以为一组数值赋予友好的名字。
7.Any--->当你为不确定类型的变量指定一个类型时,可以使用any类型来标记这些变量。
----------------------------------------------其他-------------------------------------
3.Object类型--->表示非原始类型,也就是除number,string,boolean,symbol,null 或 undefined之外的类型。
最简单的数据单元:数字,字符串,结构体,布尔值等
布尔值--> let isDone: boolean = false;
- let decLiteral: number = 6; //十进制
- let hexLiteral: number = 0xf00d; //十六进制
- let binaryLiteral: number = 0b1010; //二进制
- let octalLiteral : number = 0o744; //八进制
- let name: string = "bob";
- name = "smith";
也可以使用模版字符串,它可以定义多行文本和内嵌表达式。并以${ } 这种形式嵌入表达式
- let name: string = 'Gene';
- let age: number = 34;
- let sentence: string = ‘Hello,my name is ${ name }.
- I'll be ${ age + 1} years old next month.';
-
-
- 与下面定义sentence的方式效果相同:
-
- let scentence: string = "Hello, my name is" + name +".\n\n"+
- "I'll be" + (age +1)+ " years old next month.";
- 第一种:在元素类型后面接[]
- let list: number[] = [1,2,3];
-
- 第二种:使用数组泛型,Array<元素类型>
- let list: Array<number> = [1,2,3];
- let x: [string , number];
-
- x = ['hello' , 10];
-
- 当访问一个已知索引的元素,会得到正确的类型:
-
- console.log(x[0].substr(1)); //ok
- console.log(x[1].substr(1)); //error, 'number' does not have 'substr'
- 1.默认从0开始元素编号
- enum Color
- {
- Red,
- Green,
- Blue
- }
-
- let c: color = Color.Red;
- --------------------------------------------------------------
- 2.也可以手动指定成员的数值,如从1开始编号:
- enum Color
- {
- Red = 1,
- Green,
- Blue
- }
-
- let c: color = Color.Red;
- --------------------------------------------------------------
- 3.或者全部手动编号:
- enum Color
- {
- Red = 1,
- Green = 2,
- Blue = 4
- }
-
- let c: color = Color.Red;
- ----------------------------------------------------------------
-
- 枚举类型提供了一个便利,可以由枚举值得到它的名字。
- enum Color
- {
- Red = 1,
- Green,
- Blue
- }
- let colorName: string = Color[2];
- console.log(colorName); //显示‘green’ 因为上面代码里它的值是2
类型检查器不会对这些值进行检查,而是直接通过编译阶段的检查。
- let notSure: any = 4;
- notSure = "maybe a string instead";
- notSure = false;
-
-
- //当你只知道一部分数据的类型时,any类型也是有用的,比如,你有一个数组,它包含了不同类型的数据
-
- let list: any[] = [1, true, "free"];
-
- list[1] = 100;
- //当一个函数没有返回值时,使用void类型
- function warnUser(): void
- {
- console.log("This is my warning message");
- }
-
-
- //声明一个void类型的变量没什么用,因为你只能为它赋予 undefined 和 null
- let unusable: void = undefined;
-
- 默认情况下 null 和 undefined 是所有类型的子类型,然而,当你指定了 --stricNullChecks标记,
- null和undefined 只能赋值给void 和他们各自。
例如: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.create这样的API.
-
- 例如:
- declare function create(o: object | null): void;
-
- create({prop: 0}); //ok
- create(null); //ok
-
- create(42); //error
- create("string"); //error
- create(false); //error
- create(undefined); //error
- 类型断言 有2种表现形式
-
- let someValue: any = "this is a string";
-
- 1.‘尖括号’语法
- let strLength: number = (<string>someValue).length;
-
- 2.as语法
- let strLength: number = (someValue as string).length;