typescript:基本类型
typescript基本类型学习笔记。
一. 布尔值 boolean。 取值为true/false
二. 数字
在JavaScript 中整数和浮点数都属于 Number 数据类型。
TypeScript里的number类型包括整数和浮点数。 除了支持十进制和十六进制字面量,TypeScript还支持ECMAScript 2015(ES6)中引入的二进制和八进制字面量。
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;
三. 字符串 单引号/双引号/模版字符串
四. 数组
方式一. 在元素类型后面加上[], 表示由此类型元素组成的一个数组。 元素类型[]
let list: number[] = [1, 2, 3];
方式二. 使用数组泛型, Array<元素类型>
let list1: Array<number> = [4, 2, 3];
五.元组:(js没有元组类型)
表示一个已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。有限制长度,不可以越界访问。
let tuple: [string, number]= ['hello', 10];
tuple[2] = 'word'; //越界, 报错
六.枚举(js没有枚举类型)
enum Color { Red, Green, Blue }
let c: Color = Color.Green; //c为1
默认情况下,从0开始为元素编号。也可以手动制定成员的数值。
enum Color {Red = 1, Green, Blue}
let c: Color = Color.Green; //c为2
或者全部采用手动赋值。
enum Color {Red = 4, Green = 5, Blue = 6}
let c: Color = Color.Green; //c 为5
也可以由枚举的值得到它的名字
enum Color2 { Red = 4, Green = 5, Blue = 6 }
let cname: string = Color2[5]; //cname 为‘Green’
let cname1: string = Color2[2]; //cname1 为undefined
如果某个属性的值是计算出来的,那么它后面一位的成员必须要初始化值。
const getValue = () => {
return 0
}
enum List {
A = getValue(),
B = 2, // 此处必须要初始化值,不然编译不通过,会报错
C
}
console.log(List.A) // 0
console.log(List.B) // 2
console.log(List.C) // 3
七. any 任意类型
any类型的变量可以赋给它任意值,并且能在它上面调用任意的方法,即使它没有这些方法。
Object类型的变量只是允许你给它赋任意值 ,但是却不能够在它上面调用任意的方法,即便它真的有这些方法。
let notSure: any = 4;
notSure = "maybe a string instead";
notSure.toFixed(); // 执行成功
let prettySure: Object = 4; //输出4
//prettySure.toFixed(); // 报错: Property 'toFixed' doesn't exist on type 'Object'.
八. void 没有任何类型
1.函数没有返回值
function warnUser(): void {
console.log("This is my warning message");
}
2.变量为undefined/null
let unusable: void = undefined;
九. null/undefined
TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。
默认情况下null和undefined是所有类型的子类型。 就是说你可以把 null和undefined赋值给number类型的变量。
然而,当你指定了 --strictNullChecks 标记,null和undefined只能赋值给void和它们各自。
let u: undefined = undefined; // undefined
let n: null = null; //null
let n1: null = undefined; //undefined
let u1: undefined = null; // null
注:typeof null: object
typeof undefined: undefined
十. never
never类型表示的是那些永不存在的值的类型。
never类型可以表示总是会抛出异常或者根本就不会有返回值的函数的返回值类型。
变量也可能是never类型。
never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never。
let x: never;
let y: number;
// 运行错误,数字类型不能转为 never 类型
x = 123;
// 运行正确,never 类型可以赋值给 never类型
x = (()=>{ throw new Error('exception')})();
// 运行正确,never 类型可以赋值给 数字类型
y = (()=>{ throw new Error('exception')})();
// 返回值为 never 的函数可以是抛出异常的情况
function error(message: string): never {
throw new Error(message);
}
// 返回值为 never 的函数可以是无法被执行到的终止点的情况
function loop(): 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); // OK
create(42); // Error
create("string"); // Error
create(false); // Error
create(undefined); // Error 指定了--strictNullChecks标记
十二.类型断言:手动指定一个值的类型。
1. 尖括号语法
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
2. as语法
let someValue1: any = "this is a string";
let strLength1: number = (someValue1 as string).length;
在TypeScript里使用JSX时,只有 as语法断言是被允许的。
上一篇: json-lib——JsonConfig详细使用说明
下一篇: Shiro 和SSM的整合配置