Я совершенно новый в TypeScript, и несмотря на то, что у меня есть красные документы, я просто не могу добиться того, что хочу с помощью генериков.Пропустить общий тип и свойство типа использования
Я хочу сделать что-то вроде этого:
declare interface ObjectInterface {
someKey: string
}
const model: SomeInterface = createModel<ObjectInterface>(someArrayOfObjects);
и здесь createModel
метод:
private createModel<T>(someArray: T[]): SomeInterface {
const model: SomeInterface = (...someCode...);
someArray.forEach((obj: T) => { model.doSomething(obj.someKey) });
return model;
}
и машинопись бросает мне ошибку: error TS2339: Property 'someKey' does not exist on type 'T'.
Вот та часть, которую я не возьми. Если ObjectInterface
имеет someKey
и передается как общий тип createModel
, то почему obj
не «видит» его как свое имущество?
Если у вас есть ответ в Google, пожалуйста, дайте мне подсказку, какие ключи следует искать? ;)
Вы должны добавить ограничение на 'T':' createModel (someArray: T []): SomeInterface {...} ' –
Lee
Спасибо, я нашел это также в документах, но почему-то я думал что это только для вещей, которые специально не установлены на интерфейсе, например '.length'. Я думал, что если я передам ObjectInterface, тогда TS просто узнает, что есть этот ключ. – Rob