欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

typescript:基本类型

程序员文章站 2022-07-12 15:52:49
...

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语法断言是被允许的。

相关标签: typescript