Я хочу сделать утверждение времени компиляции для следующего кода:
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')
, чтобы FormTextInput
всегда выдавало ошибку, если FieldName
относится к строковое значение Fields
Возможно ли это сделать во время компиляции с Typescript? Я видел некоторые документы по asserts
(https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion -функциям ), но не похоже, что он предназначен для этого сценария