TypeScript 4.0 Beta

局长
 局长
发布于 2020年06月30日
收藏 5

精选30+云产品,助力企业轻松上云!>>>

TypeScript 4.0 Beta 已发布,全体看来,此版本在兼容性方面没有特别大年夜的变更。由于 TypeScript 团队表示新版本持续应用与之前版本相似的版本控制模型,可将 4.0 视作 3.9 的延续升级版本。并且他们也一向在寻求不就义重要灵活性的情况下,供给一个最大年夜限制增添 breaking changes 的升级途径。

经过过程 NuGet 或在 npm 中应用以下敕令停止 Beta 版的测试:

npm install typescript@beta

4.0 重要新功能

构造函数的类属性揣摸

当 noImplicitAny 被启用时,TypeScript 4.0 如今可以应用控制流分(control flow analysis)析来肯定类中的属性类型。

class Square {
    // Previously: implicit any!
    // Now: inferred to `number`!
    area;
    sideLength;

    constructor(sideLength: number) {
        this.sideLength = sideLength;
        this.area = sideLength ** 2;
    }
}

假设并不是将构造函数的一切途径都分派给实例成员,则该属性能够被视为undefined

class Square {
    sideLength;

    constructor(sideLength: number) {
        if (Math.random()) {
            this.sideLength = sideLength;
        }
    }

    get area() {
        return this.sideLength ** 2;
        //     ~~~~~~~~~~~~~~~
        // error! Object is possibly 'undefined'.
    }
}

在更清楚的情况下(例如具有某种initialize办法),假设位于strictPropertyInitialization中,能够会须要显式类型注释和定值赋值断言(!)

class Square {
    // definite assignment assertion
    //        v
    sideLength!: number;
    //         ^^^^^^^^
    // type annotation

    constructor(sideLength: number) {
        this.initialize(sideLength)
    }

    initialize(sideLength: number) {
        this.sideLength = sideLength;
    }

    get area() {
        return this.sideLength ** 2;
    }
}

短路分派运算符

JavaScript 和其他很多说话都支撑复合赋值运算符。复合赋值运算符将一个运算符应用到两个参数上,然后将成果赋值到左边。以下:

/ Addition
// a = a + b
a += b;

// Subtraction
// a = a - b
a -= b;

// Multiplication
// a = a * b
a *= b;

// Division
// a = a / b
a /= b;

// Exponentiation
// a = a ** b
a **= b;

// Left Bit Shift
// a = a << b
a <<= b;

JavaScript 中的很多运算符都有一个对应的赋值运算符,但有三个例外:逻辑和(&&)、逻辑或(||),和空值归并(??)。

TypeScript 4.0 为上述三个运算符增长了对应的赋值运算符支撑:

let values: string[];

// Before
(values ?? (values = [])).push("hello");

// After
(values ??= []).push("hello");
a ||= b;

// actually equivalent to

a || (a = b);

概略检查发布告诉布告

本站文章除注明转载外,均为本站原创或编译。迎接任何情势的转载,但请务必注明出处,尊敬他人休息共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.aledoyoga.com]
本文标题:TypeScript 4.0 Beta
加载中
此消息有 7 条评论,请先登录后再检查。
前往顶部
顶部