TypeScript 基础数据类型简介
TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了实用的枚举类型方便实用。
一、布尔值 boolean
//布尔类型
let idDone: boolean = false;
二、数字 number
和JavaScript一样,所有的数字都是浮点数。除了支持十进制、十六进制,还支持ECMAScript 2015中引入的二进制和八进制字面量。
//数字类型
let decLiteral: number = 7;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;
三、字符串 string
和JavaScript一样,可以使用双引号( "
)或单引号('
)表示字符串。
//字符串
let name: string = 'bob';
name = "smitch";
扩展功能模板字符串, ${ expr },这种方式类似C#6.0中的字符串拼接方法。
不同的是在JavaScript中需要使用反引号(`)将,字符串包裹。
let sentence: string = `name=“${name}”,decLiteral="${decLiteral * 10}"`; //使用模板字符串,需要使用反引号包裹
console.info(sentence);
四、数组
和JavaScript一样可以使用两种方式定义数组
1.number []
let list: number[] = [1, 3, 2];
console.info(list);
- Array<元素类型>
let list2: Array<number> = [4, 5, 6];
console.info(list2);
五、元组 Tuple
元组类型允许表示一个一直元素数量和类型的数组,各元素类型不必相同
//元组Tuple
let x: [string, number];
x = ['hello', 10];
//x=[10,'hello']; //编译时出错,与元组对应类型不相同
console.info(x[0].substr(1));
x[3] = 'world';
console.log(x[5]); //编译不会出错,运行出错,因为x[5]没有赋值为undefined
//x[6] = true; //编译出错,boolean不是number或string类型
x[6]=100;
console.info(x); //说明元组中为undefined的属性序列化的时候不会显示
六、枚举 enum
enum类型是对JavaScript标准数据类型的一个补充,用法同C#基本类似。
//使用方式同C#相同,不指定编号则从0开始
enum Color{
Red,
Green,
Blue
}
let c:Color=Color.Green; //输出枚举的值:1
console.info(c);
console.info(Color[2]); //获取枚举值对应的字符串定义
console.info(Color);
七、特殊数据类型
1.Any
使用any类型标记的变量,编译时不检查类型,运行时检查。
//Any
let notSure:any=4;
console.info(notSure.toFixed(2)); //正常输出:4.00
notSure='Are you sure?';
notSure=false;
// console.info(notSure); //正常输出false
console.info(notSure.toFixed(2)); //编译不报错,运行时报错
2.Void
某种程度上来说,void类型和any类型相反,它表示没有任何类型。主要用户函数的空返回。
void类型可以赋值为null或者undefined
//Void 类型
let unusable: void = undefined;
console.info(unusable);
function warnUser(): void {
alert('This is my waring message.');
}
3.Null 和 Undefined
默认情况下null
和undefined
是所有类型的子类型。 就是说你可以把 null
和undefined
赋值给number
类型的变量。
4.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) {
}
}
八、类型断言
类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。
两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;然而,当你在TypeScript里使用JSX时,只有 as
语法断言是被允许的。
//类型断言
let someValue: any = 'this is a string';
let strLenth: number = (<string>someValue).length;
console.info(strLenth);
let value2: any = 11;
let num1: string = (value2 as number).toFixed(2);
console.info(num1);
更多:
TypeScript 变量声明
TypeScript开发环境搭建-Visual Studio Code
[TypeScript 简介整理][TypeScript 1]
还没有评论,来说两句吧...