У меня есть функция, использующая объект в качестве параметра, например:
interface Options {
foo?: string;
bar?: number;
};
function fooNction(opts: Options): void {
}
В некоторых случаях это работает нормально, но не во всех:
fooNction({foo: "s"}); // OK
fooNction({a: "x"}); // fine as TS gives an Error as expected
fooNction("hello"); // no Error...
Я попытался расширить свой интерфейс из типа объекта TS 2.2, подобного этому
interface Options extends object {
foo?: string;
bar?: number;
};
чтобы запретить базовые типы, но машинописный текст сообщает: «Не удается точно назвать объект».
Есть ли способ определить, что интерфейсы должны быть объектом, но не иметь обязательного поля?