gpt4 book ai didi

typescript 推断关键字推断错误的类型?

转载 作者:行者123 更新时间:2023-12-04 07:58:56 26 4
gpt4 key购买 nike

用这样一个简单的构造:

type Test<Source extends string[]> = 
Source extends [infer Head, ...infer Tail] ? `${Head}${Head}` : never;

Typescript 提示 ${Head}${Head} 中的字符串插值说:Type `'Head'` is not assignable to type 'string |编号 |二进制 | bool 值'。类型“Head”不可分配给类型“number”。ts(2322)

...这对我来说意义不大,但我的搜索并没有取得成果。 Source 必须是一个 string[] 所以 Head 如果存在,一定是一个字符串吧?所以 ${Head} 必须完全有效。为什么 TS 提示无法将其分配给 number?字符串也可以分配给 "string | number | bigint | boolean" 所以这个错误对我来说意义不大。我可以通过将字符串插值放在 "Head extends string ? ... : ... 子句之间来修复它,但我想知道为什么它首先是必要的。

最佳答案

是也不是。看看下一个例子:

type Test0<Source extends string[]> =
Source extends [infer Head, ...infer Tail] ? Head : never;

type O = Test0<[never, 'a']> // no error, because that is how NEVER works

因为 string|never 返回 string

我认为在上述情况下检查 Head 是否为字符串要安全得多。

关于 typescript 推断关键字推断错误的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66564140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com