相关疑难解决方法(0)

为什么打字稿字符串和数字从不显示?

我正在研究 Typescript,但我有一些困惑。

type t = number & string // never
type t1 = number & boolean // never
type t2 = number & string[] // number & string[]
Run Code Online (Sandbox Code Playgroud)

为什么看起来不一样?

typescript

6
推荐指数
1
解决办法
94
查看次数

`string & any[]` 不应该导致 `never` 吗?

我注意到 TypeScript 有一些奇怪的地方。我有一个类型联合,其中包含一些数组类型(string[], number[])和一些非数组类型(string, number)。如果我使用类型推断,一切都会按预期进行:

type bar = string | number | string[] | number[];
declare foo: bar;

if (Array.isArray(foo))
{
    foo // string[] | number[]
}
else
{
    foo // string | number
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我想将类型直接限制为数组类型并使用类型交集,我会得到一些意想不到的结果:

declare foo: bar & any[];

// expected type: string[] | number[]

foo // (string & any[]) | (number & any[]) | (string[] & any[]) | (number[] & any[])
Run Code Online (Sandbox Code Playgroud)

这是为什么?
不应该string & any[]评估 toneverstring[] …

typescript

1
推荐指数
1
解决办法
365
查看次数

标签 统计

typescript ×2