gpt4 book ai didi

typescript - 为什么 Typescript 会忽略超出已知大小的元组内容?

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:28 26 4
gpt4 key购买 nike

有没有办法让 Typescript 不允许这样做?

type TwoItemTuple  = [string, string];
const uh: TwoItemTuple = ['a', 'b', 'a']

如果不是,背后的原因是什么?

最佳答案

你也可以尝试这样的事情:

type OnlyTwo<T1, T2 = T1> = [T1, T2] & {
0: T1;
1: T2;
2?: never;
}

var x: OnlyTwo<number> = [1, 1]; // Okay;
var y: OnlyTwo<number> = [1, 1, 1]; // Error
var z: OnlyTwo<number> = [1, 1, undefined]; // Error
var o: OnlyTwo<number> = [1]; // Error
var b: OnlyTwo<number> = [1, 1, 1, 1] // Error

var s1: OnlyTwo<number, string> = [1, "a"] // Okay
var s1: OnlyTwo<number, string> = [1, "a", 1] // Error

据我所知,对于该类型,唯一可以分配给它的是一个数组文字,其中恰好有两个正确类型的项目。

一个问题是您可以使用 pushpop 修改这些数组,这会将实际值变成不再符合类型的值。谨慎使用。

关于typescript - 为什么 Typescript 会忽略超出已知大小的元组内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48122528/

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