TypeScript 类型保护符无法处理未知类型作为默认值,

4zcjmb1e  于 6个月前  发布在  TypeScript
关注(0)|答案(5)|浏览(50)

我们无法知道类型保护中的类型推断失败,因为这个问题。也许 a is any[] 也应该返回 unknown[]。

TypeScript 版本: 3.7.x-dev.20200410
搜索词:
代码:

declare function f(a: any): a is any[];
declare function g(a: any): a is unknown[];
declare const a: readonly number[];

f(a) && a; // any[]
g(a) && a; // not unknown[]

预期行为:

g 缩小 a 的类型为 unknown[]

实际行为:

g 缩小 a 的类型为 readonly number[] & unknown[]

** playground 链接:**https://www.typescriptlang.org/play/?ts=3.9.0-dev.20200410&ssl=1&ssc=1&pln=6&pc=11#code/CYUwxgNghgTiAEAzArgOzAFwJYHtVIAooAueKVATwEpSp4sBnMygbQF0BuAKFElgRTpseeAHMitSjTL0maANaocAd1TtuvaHHhg8DDGVJwowPBArxUyALYAjEDHVcuiIlXgAyD2W7io7rx8gA
相关问题:#17002

q35jwt9p

q35jwt9p1#

这遵循了子类型减少的规则。

ukxgm1gy

ukxgm1gy2#

那么,当有可能时,你能否将这个问题视为一个功能请求,支持未知默认类型时的类型保护?总是发布两个问题是麻烦的。

bvn4nwqk

bvn4nwqk3#

你好,RyanCavanaugh。

cbeh67ev

cbeh67ev5#

@RyanCavanaugh Also #37999 . Your inconsistent (and unexplained) response is very murkiness. Explain the valid reason when closing the issue or changing the response. How explain #37999 .

相关问题