У меня есть функция TypeScript, которая возвращает тип Foo
:
interface Foo {
bar: string;
baz: string;
}
function getFoo(): Foo {
return {
bar: 'hello',
baz: 'world',
};
}
// Chai Assertion
it('Should return a Foo', () => {
expect(getFoo()).to.deep.equal({
bar: 'hello',
baz: 'world',
});
})
Когда я меняю интерфейс Foo
, моя функция getFoo()
выдает ошибку TypeScript:
interface Foo {
bar: number; // change these to numbers instead
baz: number;
}
function getFoo(): Foo {
// Compile time error! Numbers aren't strings!
return {
bar: 'hello',
baz: 'world',
};
}
Однако мой тест Mocha не вызывает ошибку времени компиляции!
Есть ли безопасный для типов способ сделать expect().to.deep.equal()
? Что-то вроде:
// Strawman for how I'd like to do type-safety for deep equality assertions,
// though this generic signature still seems unnecessary?
expect<Foo>(getFoo()).to.deep.equal({
bar: 'hello',
baz: 'world',
});