Я столкнулся с проблемой, которую невозможно исправить. Скажем, у меня есть следующий код:
interface HasId {
id: string;
}
type Combiner<T> = {
[key in keyof T]: T[key];
}
function testfn<T extends HasId>(args: Combiner<T>) {
}
class Person<T extends HasId> implements HasId {
id: string;
test() {
testfn<T>({ id: this.id });
}
}
Этот код только для примера, но не должно быть никаких ошибок. Однако проблема возникает вокруг этой строки:
testfn<T>({ id: this.id })
Он всегда, всегда, всегда выдает эту ошибку во время компиляции:
Argument of type '{ id: string; }' is not assignable to parameter of type 'Combiner<T>'
Но дело в том, что ошибка неправильная. { id: string }
соответствует спецификациям типа Combiner
!
Не только это, но и в VSCode предлагается добавить свойство id
, когда я звоню testfn
, что заставило меня поверить это ошибка компилятора.
Я ошибаюсь, или с этой ошибкой сталкиваются и другие люди?
Изменить:
вот мой tsconfig.json
:
{
"compilerOptions": {
"strict": true,
"experimentalDecorators": true,
"module": "CommonJS",
"target": "ES2019",
"lib": ["ES2019"],
"rootDir": "./src",
"outDir": "./dist",
"esModuleInterop": true,
"strictPropertyInitialization": false
},
"include": [
"./src"
],
"exclude": [
"./node_modules",
"./dist"
]
}