Câu trả lời này sẽ có lợi cho những người dựa vào gói npm ts-node
.
Tôi cũng đang vật lộn với mối quan tâm tương tự về việc mở rộng đối tượng yêu cầu , tôi đã theo dõi rất nhiều câu trả lời trong stack-overflow & kết thúc bằng chiến lược được đề cập dưới đây.
Tôi đã khai báo gõ mở rộng cho express trong thư mục sau.${PROJECT_ROOT}/api/@types/express/index.d.ts
declare namespace Express {
interface Request {
decoded?: any;
}
}
sau đó cập nhật của tôi tsconfig.json
để một cái gì đó như thế này.
{
"compilerOptions": {
"typeRoots": ["api/@types", "node_modules/@types"]
...
}
}
ngay cả sau khi thực hiện các bước trên, studio hình ảnh đã ngừng phàn nàn, nhưng thật không may, ts-node
trình biên dịch vẫn được sử dụng để ném.
Property 'decoded' does not exist on type 'Request'.
Rõ ràng, ts-node
không thể định vị các định nghĩa kiểu mở rộng cho đối tượng yêu cầu .
Cuối cùng, sau khi dành hàng giờ, vì tôi biết Mã VS không phàn nàn & có thể xác định được các định nghĩa đánh máy, ngụ ý có gì đó không ổn với ts-node
trình biên dịch.
Cập nhật bắt đầu script
trong package.json
cố định nó cho tôi.
"start": "ts-node --files api/index.ts",
các --files
đối số đóng vai trò chính ở đây tìm cách xác định các định nghĩa loại tùy chỉnh.
Để biết thêm thông tin, vui lòng truy cập: https://github.com/TypeStrong/ts-node#help-my-types-are-missing