我有多個字串陣列(硬編碼)的物件。在其他空陣列中,我想指定只允許來自該物件的字串。
在簡單的非嵌套中,我正在這樣做,
typeof someArray[number][]所以我希望使用嵌套陣列這將起作用typeof someObjectWithArrays[string][number][],但沒有:/
我認為這個例子會更好地解釋我的意思:
const demo1 = ['test1', 'test2', 'test3'] as const
const demo2 = {
a: ['test4', 'test5', 'test6'],
b: ['test7', 'test8', 'test9'],
} as const
const values = {
demo1: [] as typeof demo1[number][], // allow 'test1' 'test2' 'test3'
demo2: [] as typeof demo2[string][number][], // ????? allow 'test4' 'test5' 'test6' 'test7' 'test8' 'test9'
}
console.log(values.demo1.includes('test1')) // ok
console.log(values.demo1.includes('notexists')) // error, so ok
console.log(values.demo2.includes('test8')) // ????? should be ok
console.log(values.demo2.includes('notexists')) // ????? should be error
操場
uj5u.com熱心網友回復:
您需要將索引更改typeof demo2為keyof typeof demo2:
const demo1 = ['test1', 'test2', 'test3'] as const
const demo2 = {
a: ['test4', 'test5', 'test6'],
b: ['test7', 'test8', 'test9'],
} as const
const values = {
demo1: [] as typeof demo1[number][],
demo2: [] as typeof demo2[keyof typeof demo2][number][],
}
console.log(values.demo1.includes('test1')) // ok
console.log(values.demo1.includes('notexists')) // error, so ok
console.log(values.demo2.includes('test8')) // correctly ok
console.log(values.demo2.includes('notexists')) // correctly errors
TypeScript Playground 鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450791.html
標籤:打字稿
