TypeScript 3.6 Beta 發布,穩定版定於8月底推出

←手機掃碼閱讀     admin @ 2019-07-25 , reply:0

TypeScript 3.6 Beta 已發布,團隊表示希望此測試版本有望成為 TypeScript 3.6 的完整功能版本。此外,在接下來的幾周內,團隊會為 RC 版以及穩定版的發布繼續修復錯誤並提升性能和穩定性。

可通過 NuGet 體驗測試版,或使用 npm 進行獲取:


npm install -g typescript @ beta

下面繼續看看此版本值得關注的新功能。

使用更嚴格的生成器(Stricter Generators)

TypeScript 3.6 引入了對迭代器和生成器函數(generator functions)的更嚴格檢查。在早期版本中,生成器的使用者無法區分一個值是來自 yield 操作或是從生成器返回。


function* foo() {
    if (Math.random() < 0.5) yield 100;
    return "Finished!"
}

let iter = foo();
let curr = iter.next();
if (curr.done) {
    // TypeScript 3.5 and prior thought this was a 'string | number'.
    // It should know it's 'string' since 'done' was 'true'!
    curr.value
}

此外,生成器會假設 yield 的類型始終為 any。


function* bar() {
    let x: { hello(): void } = yield;
    x.hello();
}

let iter = bar();
iter.next();
iter.next(123); // oops! runtime error!

以第一段代碼為例,在 TypeScript 3.6 中,檢查器會知道 curr.value 的正確類型應為 string,並在最後一個示例中糾正對 next() 的錯誤調用。這要歸功於因在IteratorIteratorResult類型聲明中進行的一些更改而引入部分新的類型參數,以及 TypeScript 用於代表稱為Generator類型的生成器。

Improved UX Around Promises

Promise是目前使用非同步數據的最常用方法之一。不幸的是,使用Promise面向對象的 API 通常會讓使用者感到困惑。因此針對Promise被錯誤處理的情況,TypeScript 3.6 引入了一些改進。

例如,在將其傳遞給另一個函數之前,Promise忘記.then()或者await內容通常是很常見的TypeScript 的錯誤消息現在是專用的,並告知使用者他們可能應該考慮使用await關鍵字。


interface User {
    name: string;
    age: number;
    location: string;
}

declare function getUserData(): Promise<User>;
declare function displayUser(user: User): void;

async function f() {
    displayUser(getUserData());
//              ~~~~~~~~~~~~~
// Argument of type 'Promise<User>' is not assignable to parameter of type 'User'.
//   ...
// Did you forget to use 'await'?
}

未來計劃

TypeScript 3.6 穩定版暫定於8月底發布,團隊表示會在穩定版發布幾周前推出候選版本。

詳細更新內容請查看發布公告





[admin ]

來源:OsChina
連結:https://www.oschina.net/news/108509/typescript-3-6-beta-released
TypeScript 3.6 Beta 發布,穩定版定於8月底推出已經有57次圍觀

http://coctec.com/news/all/show-post-210744.html