未正确编译Typescript声明文件

h6my8fg2  于 2022-11-18  发布在  TypeScript
关注(0)|答案(1)|浏览(269)

我有这个lib.d.ts文件

import { Users } from '@prisma/client';

declare global {
    namespace Express {
        interface User extends Users {}
    }
}

我在同一个文件夹中有这个passport.ts,其中user的类型是Express.User

passport.serializeUser((user, done) => {
    done(null, user.id);
});

IDE没有抱怨,但是当我运行应用程序时,我得到了这个错误:
error TS2339: Property 'id' does not exist on type 'User'.
这是我的tsconfig.json:

{
  "compilerOptions": {
    "target": "es2016",                                
    "lib": ["es6"],                                    
    "module": "commonjs",                              
    "rootDir": "src",                                  
    "resolveJsonModule": true,                         
    "allowJs": true,                                   
    "outDir": "build",                                 
    "esModuleInterop": true,                       
    "forceConsistentCasingInFileNames": true,          
    "strict": true,                                    
    "noImplicitAny": true,                             
    "skipLibCheck": true,                         
  }
}

这是从tsconfig json到文件的路径:

  • 配置文件
  • 源代码/配置/护照/库.d.ts

为什么会发生这种情况,我已经试着修复这个错误2天了。

EDIT:我修复了错误。它与我启动应用程序的方式有关。
以前我使用以下脚本启动它:

ts-node ./src/index.ts

添加--files标志为我修复了它

ts-node --files ./src/index.ts
下面是一个解释:https://www.npmjs.com/package/ts-node#missing-types

mrwjdhj3

mrwjdhj31#

这个问题可能是因为你试图在lib.d.ts文件的顶部导入。我也遇到过类似的问题,在文件的第一行开始声明就解决了我的问题。试试这个。

declare global {
    namespace Express {
        user: import("@prisma/client").Users
    }
}

相关问题