【发布时间】:2020-04-23 21:13:35
【问题描述】:
我想对以下代码进行编译时断言:
interface FormFields {
[K: string]: string | boolean | number;
}
function FormTextInput<
FieldName extends keyof Fields,
Fields extends FormFields
>(fieldName: FieldName) { ... }
// should throw compile-time error:
FormTextInput<'someNumberField', { someNumberField: number }>('someNumberField')
// should NOT throw error:
FormTextInput<'someStringField', { someStringField: string }>('someStringField')
如果FieldName 引用非字符串值Fields,FormTextInput 总是会抛出错误
是否可以在编译时使用 Typescript 做到这一点?我在asserts (https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions) 上看到了一些文档,但它似乎并不适用于这种情况
【问题讨论】:
标签: typescript