Я пытаюсь расширить объект данных в TypeScript, добавив несколько новых полей. Хотя я предполагаю, что это довольно распространенный шаблон в JavaScript, я не могу его скомпилировать, не делая bar
как необязательный в фрагменте, как показано ниже.Расширение объекта данных в TypeScript
Мне интересно, есть ли способ избежать bar
опционально. Любое предложение приветствуется, спасибо.
interface BaseDataObject {
foo: string;
}
interface ExtendedDataObject extends BaseDataObject {
bar?: string;
}
function extendData(input : BaseDataObject) : ExtendedDataObject {
var output : ExtendedDataObject = input;
output.bar = input.foo + ' some suffix';
return output;
}
Кажется, что это единственный способ избежать этого. – choz
Это работает, спасибо. И я предполагаю, что проверка времени компиляции отсутствующих полей обходит, не так ли? – Haocheng
@Haocheng Правильно, это официально называется [утверждение типа] (https://basarat.gitbooks.io/typescript/content/docs/types/type-assertion.html), и он сообщает компилятору, что вы доверяете ему, что объект может рассматриваться как тип, который вы указываете. – JohnnyHK