布尔值(boolean)
同js布尔值使用
let name: boolean = false
数字
js数字以及十进制、十六进制、二进制、八进制的数字
let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0xf00d; // 十六进制
let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744; // 八进制
注意:js中二进制、十六进制、八进制字面量数值,都会自动转为十进制进行运算
字符串
js中字符串类型以及模版字符串
// 普通字符串
let name: string = "nn";
// 模版字符串+变量
let model: string = 'nn';
let name: string = `名字${model}`;
数组
// 元素类型后面接上[]
let list: number[] = [1, 2, 3];
// 数组泛型 Array<元素类型>
let list: Array<number> = [1, 2, 3];
元组
元组类型:允许表示一个已知元素数量和类型的数组,各元素的类型不必相同
越界:当越界访问或赋值时,使用声明中的联合类型
注意:typescript 2.7+越界也会提示错误
// 声明
let x: [string, number];
// 初始化
x = ['hello', 10];
// 越界赋值(typescript 2.7+提示错误)
x[2] = 1 // true typescript 2.7+版false
x.push(1) // true typescript 2.7+版true
console.log(x[5].toString()); // true typescript 2.7+版false
枚举
enum类型:是对JavaScript标准数据类型的一个补充
使用枚举类型可以为一组数值赋予友好的名字。
默认行为:
1.默认为数字0
2.当为数字时,如果项目没有设置,会根据前面的值依次递增
可以通过项的value来获取key
// 默认从0开始为元素编号
enum Color {
Red,
Green,
Blue,
}
console.log(Color.Red); // 0
console.log(Color.Green); // 1
console.log(Color.Blue); // 2
// 通过value获取key
console.log(Color[2]) // Blue
// 只设置部分项
enum Color2 {
Red = 1,
Green = 3,
Blue,
}
console.log(Color2.Red); // 1
console.log(Color2.Green); // 3
console.log(Color2.Blue); // 4
注意:可以进行遍历,与对象相同
any
可以为任意值
Void
没有任何类型,常用于函数没有返回值时
// 只能是undefined
let unusable: void = undefined;
Null 和 Undefined
只有null和undefined自己
通常作为联合类型使用,不单独使用
never
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
const create = function (o: object): void {
console.log(o);
};
// 函数
const fn = function () {
console.log('测试');
};
create({ a: 1 }); // true
create(fn); // true
create(null); // false
create('str') // false
create(1) // false
类型断言
不进行类型判断,只在编译时起作用
1.<类型>验证值
2.验证值 as 类型(常用; JSX时只能用这种方式)
let str: any = 'this is string'
// <类型>验证值
let strLen: number = (<string>str).length
// 验证值 as 类型(常用)
let strLen2: number = (str as string).length