Я пытаюсь расширить существующий интерфейс:
type ColDef = { field: string; }
так что я ограничу значения полей только фактическими свойствами указанного типа:
interface TypeSafeColDef<T> extends ColDef {
field: keyof T
}
но я получаю:
Интерфейс TypeSafeColDef неправильно расширяет интерфейс ColDef. Типы свойства «поле» несовместимы. Введите 'keyof TRow | undefined 'нельзя присвоить типу' строка | неопределенный'. Тип 'keyof TRow' не может быть назначен типу 'строка | неопределенный'. Введите строку | номер | символ 'не присваивается типу' строка | неопределенный'. Тип "номер" не может быть присвоен типу "строка | неопределенный'. Тип keyof TRow нельзя присвоить типу string. Введите строку | номер | символ 'не может быть присвоен типу' строка '. Тип 'number' не может быть присвоен типу 'string'
Я пробовал следовать ограничению, но безуспешно
type StringKey = { [key: string]: any }
interface TypeSageColDef<TRow extends StringKey>
extends { [key: string]: any }
по какой-то причине ведет себя так же, какextends object
(не ограничивая ключи толькоstring
). Реальный вопрос: зачем вамextends ColDef
? У вас есть еще недвижимость на реальном примере? - person Aleksey L.   schedule 23.01.2020