美文网首页
TypeScript基础

TypeScript基础

作者: 杨志聪 | 来源:发表于2023-10-04 17:09 被阅读0次

    编程语言可以分为动态类型和静态类型两种类型。动态类型,指的是变量的类型是在运行时决定的,而且随时会改变,JavaScript、Python、Ruby都是动态类型。静态类型,指的是变量的类型是在编译时决定的,而且无法改变,C++、C#和Java都是静态类型。

    TypeScript本质上是加上静态类型和泛型、装饰器等特性的JavaScript,让我们写出更简洁和健壮的代码。

    运行环境

    目前浏览器和nodejs都不能直接运行TypeScript,所以需要将TypeScript代码转换为JavaScript代码才能运行。

    安装TypeScript编译器tsc

    npm i -g typescript
    

    查看tsc编译器的版本号,确定tsc已安装:

    tsc -v
    

    编译TypeScript代码:

    tsc index.ts
    

    类型

    TypeScript除了包含JavaScript中的基本类型(number, boolean,string...)外,还新增了any,unknown,never,tuple等类型。

    // Number
    let i: number = 0;
    
    // Tuple
    let user: [number, string] = [1, 'Tom'];
    
    // Enum
    enum Size { Small = 1, Medium, Large};
    
    // Function
    function sum(a: number, b: number): number {
        return a + b;
    }
    
    // Object
    let employee: {
        id: number;
        name: string;
    } = {
        id: 1,
        name: 'Tom'
    }
    
    // Any
    let anything: any = 0;
    anything = 'tom';
    

    需要特别注意的是any类型,any类型打破了TypeScript静态类型的特性!所以如果你没有想清楚你要做什么,尽量不要用any

    类型进阶

    1. 类型别名(type alias)。通过类型别名可以给一个类型起一个新的名字。我们常用类型别名来创建自定义的类型。
    type Employee = { 
     id: number; 
     name: string; 
     retire: (date: Date) => void
    
    1. 联合类型(union type)。创建一个可以有多种类型的变量。
    let weight: number | string = 1; 
    weight = '1kg';
    
    1. 交叉类型(Intersection Types)。是将多个类型合并为一个类型。
    type UIWidget = Draggable & Droppable;
    
    1. 字面量类型(Literal Types)。是 TypeScript 2.0 引入的一种新类型,它允许你将变量的值限制为某些特定的字面量值。
    type Quantity = 50 | 100; 
    
    1. 可为空类型(Nullable Types)。它允许在变量中存储一个值或null。
    let name: string | null = null; 
    
    1. 可选链(Optional Chaining)。是一种在访问对象属性时,如果属性不存在则返回undefined的语法。
    customer?.birthdate?.getFullYear();
    customers?.[0]; 
    log?.('message');
    
    1. 空值合并运算符??(Nullish Coalescing Operator)。是一种特殊的操作符,用于处理TypeScript变量值。它的作用是判断变量值是否为 null 或 undefined,如果是,则返回一个默认值或一个新的值。
    let val = '';
    console.log(val ?? 'alright'); // 打印val的值,因为val不是null或undefined
    console.log(val || 'alright'); // 打印alright,因为空字符视为false
    
    1. unknown类型。unkonwn类型是any类型的安全版本,推荐代替any使用。因为unkonwn类型的变量需要将它确定为具体的类型后才能对它进行操作。
    function render(document: unknown) { 
     // 需要确定为具体的类型,才能进行操作
     if (typeof document === 'string') { 
       // 将document作为string类型进行操作
     }
    }
    
    1. never类型。一般用never类型来声明一个永不返回的函数(死循环),或者一个一定会抛出错误的函数。
    function processEvents(): never { 
     while (true) {}
    }
    
    1. 类型断言(Type Assertion)。可以用来手动指定一个值的类型。有时我们比编译器更清楚一个变量的类型,这时候就可以用类型断言。
    // 将obj视为Person类型处理
    obj as Person
    

    相关文章

      网友评论

          本文标题:TypeScript基础

          本文链接:https://www.haomeiwen.com/subject/somsbdtx.html