Я использую Ant Design + TypeScript в своем приложении React. У меня есть форма дизайна Ant, в которой я хочу ввести объект результата. Метод, при котором возникает ошибка типа, выглядит следующим образом:
form.validateFields().then((values: MyInterface /* type error */) => { ... })
Если посмотреть на определение типа values
и MyInterface
, они определены следующим образом:
type StoreValue = any;
interface Store { /* values is of type Store */
[name: string]: StoreValue;
}
interface MyInterface {
name: string;
short: string;
}
Теперь мы видим этот Store
должен принимать любую пару ключ-значение string -> any
Я не понимаю, почему я получаю там ошибку.
Есть идеи?
Изменить
Мне удалось воспроизвести ошибку:
interface Store {
[name: string]: any;
}
interface Test {
name: string;
short: string;
}
function f() {
return new Promise((resolve: (value: Store) => void, reject) => {
resolve({ name: '', short: '' });
});
}
// Error:
// Type 'Store' is missing the following properties from type 'Test': name, short
f().then((res: Test) => {
console.log(res);
});
Ошибка исчезает, когда я удаляю параметр компилятора strict
в моем tsconfig.json
файле:
{
"compilerOptions": {
...
"strict": true
...
}
}
Для меня это не имеет особого смысла