Немного предыстории, я перенесу свой исходный код из Create React App в Next.JS, и TypeScript скомпилирован по-другому.
Посмотрите на этот пример:
abstract class Parent {
constructor(val: any) {
this.init(val);
}
abstract init(val: any);
}
class Child extends Parent {
foo: string;
constructor(val: string) {
super(val);
}
init(val: any) {
this.foo = val;
}
}
const i = new Child('test');
console.log(i.foo);
Я ожидаю, что console.log
напечатает test
, но вместо этого он печатает undefined
(пробовал в TypeScript Playground и работает как положено).
Проблема в том, что я не уверен, какая конфигурация вызывает эту странностьповедение, мой первый подозреваемый был tsconfig --> strictPropertyInitialization
пытался установить его на false
, но ничего не изменилось.
вот мой tsconfig.json
:
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"jsx": "preserve",
"lib": [
"es5",
"es6",
"dom",
"es2015",
"es2017"
],
"moduleResolution": "node",
"allowJs": true,
"noEmit": true,
"allowSyntheticDefaultImports": true,
"skipLibCheck": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"removeComments": false,
"preserveConstEnums": true,
"sourceMap": true,
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true,
"experimentalDecorators": true,
"strictPropertyInitialization": false
}
}
Любая помощь будет очень признательна,
Томер.