• 学习笔记:TypeScript入门——基础类型


    前言:

    TypeScript官网断断续续看过几遍,不知道项目中如何使用,有机会还是要实践一下。现在再把文档上不懂的知识点理一遍。

    基础类型

    1.什么是元组Tuple?

    元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。

    //声明一个元组类型
    let x: [string, number];
    
    //初始化正确
    x = ['hello', 10]; //OK
    
    //初始化错误
    x = [10, 'hello']; //Error
    
    //初始化正确
    x = ['world', 11]; //OK

    2.什么是枚举?

    enum类型是对JavaScript标准数据类型的一个补充。使用枚举类型可以为一组数值赋予友好的名字。

    enum Color {Red = 1, Green = 2, Blue = 4}
    let c: Color = Color.Green;
    
    let colorName: string = Color[2];

    3.Any类型

    不希望类型检查其对这些值进行检查而是直接让它们通过编译阶段的检查。

    let notSure: any = 4;
    notSure = "maybe a string instead";
    notSure = false;

    和Object类型的变量的不同:

    notSure.ifItExists(); //okay
    notSure.toFixed(); //okay
    
    let prettySure: Object = 4;
    prettySure.toFixed(); //Error

    当你只知道数组中一部分数据的类型时:

    let list: any[] = [1, true, "free"];
    list[1] = 100; //okay

    4.Void类型

    与any类型相反,它表示没有任何类型。

    function warnUser(): void {
        console.log("这是我的提示信息!");
    }

    只能赋予它undefined和null

    let unusable: void = undefined;

    5.NUll和Undefined

    null和undefined默认是所有类型的子类型,就是说你可以把null和undefined赋值给number类型的变量

    let u: undefined = undefined;
    let n: null = null;

    指定--strictNullChecks标记,null和undefined只能赋值给void和它们各自。

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

    7.Object表示非原始类型

    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

    8.类型断言

    “相信我,我知道自己在干什么”,类型断言好比其它语言里的类型转换。

    类型断言有两种形式

    (1)尖括号语法

    let someValue: any = "this is a string";
    let strLength: number = (<string>someValue).length;

    (2)as语法

    let someValue: any = "this is a string";
    let strLength: number = (someValue as string).length;

    9.尽可能地使用let来代替var

    (完)

  • 相关阅读:
    socket server的N种并发模型
    进程、线程以及Goroutine的区别
    分布式从ACID、CAP、BASE的理论推进
    epoll的理论与IO阻塞机制
    golang面试题知识点总结
    golang中如何进行项目模块及依赖管理
    面对golang中defer,要注意什么?
    Kaggle 学习之旅
    推荐在线学习读书网站
    k8s 的 dashboard 的实践
  • 原文地址:https://www.cnblogs.com/cathy1024/p/10881187.html
Copyright © 2020-2023  润新知