TS : typescript 类型注解

60 篇文章 0 订阅
12 篇文章 0 订阅
本文详细介绍了TypeScript中的类型注解,包括基础类型、数组、元组、枚举、Any、Void、Null和Undefined、Never、Object类型以及类型断言的使用和区别,帮助开发者更好地理解和应用TypeScript的强类型特性。
摘要由CSDN通过智能技术生成

TS : typescript 类型注解

  • 在ts中,类型注解是一种为函数或者变量添加约束的方式。

1. 基础的类型

  • boolean,number,string

2. 数组

  • ts可以想js一样操作数组元素,定义数字有两种方式。

    let list : number[] = [1,2,3];
    //or
    let list : Array<number> = [1,2,3];
    

3. 元组

  • 元组类型表示允许数组内的类型各不相同,但是在赋值时需要按照类型顺序来赋值。

    let list : [string , number];
    x = ['hello', 24];	// true
    x = [20 , 'hello'];	// false
    

    访问元组内元素时,也要注意类型顺序:

    console.log(x[0].substr(1));	//true
    console.log(x[1].substr(1));	//false,number类型没有这个方法
    

    当访问一个跨界元素时,会使用联合类型进行替代,但不能尝试赋值已有类型以外的:

    x[3] = 'world';	// ok,string is allowed
    x[3] = true;	// false,boolean不在这个元组内
    

4. 枚举

  • enum类型时对js的一个补充,利用枚举可以为一组数值赋予名字。一般地,枚举从0开始赋值,可以手动让其从其他数字进行赋值,也可以全部手动赋值。

    enum Color {red,green,blue}; 	// 从0开始
    let r : Color = Color.red;
    
    enum Color {red = 1,green,blue}// 从1开始
    enum Color {red = 1,green = 4,blue = 2};
    

    枚举还有一个遍历,可以由枚举的值找到对应的名字。

    enum Color {red,green,blue};
    let colorname : string = Color[0];
    console.log(colorname);	// 'red'
    

5. Any

  • any可以为一些还未确定是什么类型的变量进行标记。

    let notsure : any[] = [1,'hello',true];
    

    与Object的区别:Object类型的变量只是允许你可以在上面任意赋值,但是却不能调用对应类型的方法。

    let notsure : any = 1;
    notsure.toFixed();	//ok
    
    let notsure : Object = 1;
    notsure.toFixed();	//error,property 'toFixed' does not exist.
    

6. void

  • void与any相反,表示没有任何类型,常用于返回值为void的函数

    function warning() : void {
        console.log('warning!');
    }
    

7. null和undefined

  • 默认情况下nullundefined是所有类型的子类型。 就是说你可以把 nullundefined赋值给number类型的变量。

8. never

  • 表示哪些永不存在的值,例如, never类型是那些总是会抛出异常或没有返回值的函数类型; 变量也可能是 never类型,当它们被永不为true的类型保护所约束时。

    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) {
        }
    }
    

9. Object类型

  • 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
    

10. 类型断言

  • 类型断言类似于类型转换,但是不进行特殊的数据检查和解构。

    let someValue: any = "this is a string";
    let strLength: number = (<string>someValue).length;
    
    // or 
    let someValue: any = "this is a string";
    let strLength: number = (someValue as string).length;
    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值