Я пытаюсь расширить тип User
внутри express.js
, добавив файл объявления express.d.ts
в мой проект. Файл объявления удаляет извилистые строки ошибок внутри кода VS, но Typescript не будет компилироваться. Я получаю ошибки, такие как TS2339: Property 'id' does not exist on type 'User'
, когда пытаюсь скомпилировать, даже если intellisense распознает объявления.
express .d.ts
import { Channel, User as DbUser } from '../entities'
declare global {
namespace Express {
interface Request {
channel?: Channel
}
//User already exists on Request and is of type {}
interface User extends DbUser {
}
}
}
tsconfig. json
{
"compilerOptions": {
"module": "commonjs",
"target": "ES2017",
"pretty": true,
"strict": true,
"alwaysStrict": true,
"noImplicitThis": false,
"noUnusedLocals": true,
"strictNullChecks": false,
"noUnusedParameters": false,
"noFallthroughCasesInSwitch": true,
"baseUrl": ".",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"esModuleInterop": true,
"lib": [ "ESNext" ]
}
}
пакет. json
{
"dependencies": {
// ...brevity
"express": "^4.17.1",
"ts-loader": "^5.4.5",
"ts-node": "^8.6.2",
"typescript": "^3.7.5"
},
"devDependencies": {
// ...brevity
"@types/express": "^4.17.2",
"@types/express-serve-static-core": "^4.17.2",
}
}
ошибка компиляции TSError : ⨯ Невозможно скомпилировать TypeScript: src / middleware / authorize.ts (8,34): ошибка TS2339: Свойство 'session' не существует для типа 'Request'. src / middleware / authorize.ts (10,35): ошибка TS2339: свойство 'badges' не существует для типа 'User'. src / middleware / authorize.ts (25,34): ошибка TS2339: свойство 'сеанс' не существует для типа 'Запрос'. src / middleware / authorize.ts (27,35): ошибка TS2339: свойство 'badges' не существует в типе 'User'. src / middleware / authorize.ts (42,34): ошибка TS2339: свойство 'сеанс' не существует для типа 'Запрос'. src / middleware / authorize.ts (44,35): ошибка TS2339: свойство 'badges' не существует для типа 'User'.