TypeScript:省略只读对象文字
TypeScript: Omit readonly object literal
我需要确保 bar
的值必须是只读对象 FOO
的键,除了键 c
.
代码
const FOO = {
a: {
// key-value pairs
},
b: {
// key-value pairs
},
c: {
// key-value pairs
},
} as const;
// all of the keys are assignable
const allKeys: keyof typeof FOO = 'a';
// tried this but TypeScript doesn’t throw error
const bar: Omit<keyof typeof FOO, 'c'> = 'c';
Omit<T, K>
适用于 objects/records 和属性,您正在寻找适用于工会的 Exclude<T, U>
:
const bar: Exclude<keyof typeof FOO, 'c'> = 'c'; // error
或者,对记录类型应用 Omit
,然后对结果应用 keyof
:
const bar: keyof Omit<typeof FOO, 'c'> = 'c'; // error
我需要确保 bar
的值必须是只读对象 FOO
的键,除了键 c
.
代码
const FOO = {
a: {
// key-value pairs
},
b: {
// key-value pairs
},
c: {
// key-value pairs
},
} as const;
// all of the keys are assignable
const allKeys: keyof typeof FOO = 'a';
// tried this but TypeScript doesn’t throw error
const bar: Omit<keyof typeof FOO, 'c'> = 'c';
Omit<T, K>
适用于 objects/records 和属性,您正在寻找适用于工会的 Exclude<T, U>
:
const bar: Exclude<keyof typeof FOO, 'c'> = 'c'; // error
或者,对记录类型应用 Omit
,然后对结果应用 keyof
:
const bar: keyof Omit<typeof FOO, 'c'> = 'c'; // error