Какая опция в tsconfig.json отвечает за типизацию this в объектах?
Почему this имеет тип any в следующем примере?
const x = {
name: 'x',
getX() {
// this почему то any
this.name;
},
};
Проект сгенерирован через nest cli nest new
Версии пакетов:
"@nestjs/common": "^10.0.0",
"@nestjs/config": "^3.1.1",
"@nestjs/core": "^10.0.0",
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "ES2021",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./",
"incremental": true,
"skipLibCheck": true,
"strictNullChecks": false,
"noImplicitAny": false,
"strictBindCallApply": false,
"forceConsistentCasingInFileNames": false,
"noFallthroughCasesInSwitch": false,
"paths": {
"@/*": ["./src/*"]
}
}
}
Ответы (1 шт):
Автор решения: Andrei Khotko
→ Ссылка
Ответ предназначен для тех, кто пользуется редакторами кода (IDE) от Microsoft:
- VS Code
- Visual Studio
Есть ощущение, что this не будет иметь тип any в иных редакторах кода / IDE. Буду признателен тем людям, которые проверят и на других IDE (JetBrains’ WebStorm, IntelliJ IDEA).
Необходимо выставить опцию "strict": true.
{
"compilerOptions": {
"strict": true,
// ... остальные опции
}
}
Мне не удалось найти никакого упоминания о влиянии этой опции на определение типа this из контекста кода, поэтому склоняюсь к тому, что такая проблема встречается не во всех редакторах кода и не связана с настройками typescript компилятора.