gpt4 book ai didi

javascript - 使用键和数组 typescript 编写一个对象

转载 作者:行者123 更新时间:2023-12-03 00:15:02 25 4
gpt4 key购买 nike

我正在 typescript 中编写以下内容并看到以下错误

const WEEKDAYS_SHORT = {
en: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
de: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],
};

<StyledDayPicker weekdaysShort={WEEKDAYS_SHORT[language]} />

Type 'string[]' is not assignable to type '[string, string, string, string, string, string, string]'. Property '0' is missing in type 'string[]'. [2322]

我尝试了以下方法,但出现错误。

const WEEKDAYS_SHORT: string[] = {
en: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
de: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],
};

最佳答案

weekdaysShort 需要一个长度为 7 的字符串元组。默认情况下, typescript 推断 fir 数组文字的数组。简单的解决方案是使用一个额外的函数来帮助推理:

const stringTuple = <T extends string[]>(...a: T) => a;

const WEEKDAYS_SHORT = {
en: stringTuple('S', 'M', 'T', 'W', 'T', 'F', 'S'),
de: stringTuple('S', 'M', 'D', 'M', 'D', 'F', 'S')
};

或者您可以使用类型断言:

type Tuple7 = [string,string,string,string,string,string,string]
const WEEKDAYS_SHORT = {
en: ['S', 'M', 'T', 'W', 'T', 'F', 'S'] as Tuple7,
de: ['S', 'M', 'D', 'M', 'D', 'F', 'S'] as Tuple7,
};

或者在 typescript 3.4(目前未发布)中,您可以断言 as const 以使编译器推断出只读元组:

const WEEKDAYS_SHORT = {
en: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
de: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],
} as const;

还取决于您的编译器设置,语言 应为 'en' | 'de' 用于索引工作。

关于javascript - 使用键和数组 typescript 编写一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54557317/

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