问题:TypeScript找不到声明文件

问题:TypeScript找不到声明文件,typescript,typescript-typings,Typescript,Typescript Typings,我在/src/models/中有两个文件,它们是User.ts和User.d.ts。我试图在User中构建一个类,然后为我在User.d.ts中使用的对象创建一个接口声明。我以为User.ts能够自动使用这个界面,因为typescript解析所有的d.ts文件?配置有问题吗?或者我只是不理解这个概念 我得到的错误在User.d.ts文件中: Parsing error: "parserOptions.project" has been set for @typescript-

我在/src/models/中有两个文件,它们是User.ts和User.d.ts。我试图在User中构建一个类,然后为我在User.d.ts中使用的对象创建一个接口声明。我以为User.ts能够自动使用这个界面,因为typescript解析所有的d.ts文件?配置有问题吗?或者我只是不理解这个概念

我得到的错误在User.d.ts文件中:

Parsing error: "parserOptions.project" has been set for @typescript-eslint/parser.
The file does not match your project config: src/models/User.d.ts.
The file must be included in at least one of the projects provided
User.ts:

class User {
  private id: number;

  constructor(id: number) {
    this.id = id;
  }

  static create(userData: UserData): User | undefined {
    return undefined;
  }

  getId(): number {
    return this.id;
  }
}

export default User;
UserData.d.ts:

interface UserData {
  id?: number;
  gmail?: string;
  firstName?: string;
  lastName?: string;
  loginIP?: string;
  secureKey?: string;
  imgFileName?: string; // file name of the users profile image
  lastUpdate?: string;
  createDate?: string;
}
User.ts在查找UserData时遇到问题,我似乎无法在文件中使用它。 My tsconfig.json:

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "target": "es6",
    "noImplicitAny": true,
    "moduleResolution": "node",
    "sourceMap": true
  },
  "include": ["/src/**/*.ts", "**/src/**/*.ts", "**/__tests__/**/*.ts"]
}
My.eslintrc.js

module.exports = {
  extends: ['airbnb', 'plugin:@typescript-eslint/recommended'],
  parser: '@typescript-eslint/parser',
  plugins: ['@typescript-eslint', 'prettier'],
  settings: {
    'import/parsers': {
      '@typescript-eslint/parser': ['.ts', '.tsx'],
    },
    'import/resolver': {
      typescript: {},
    },
  },
  rules: {
    'import/no-extraneous-dependencies': [2, { devDependencies: ['**/*.test.tsx', '**/*.test.ts'] }],
    '@typescript-eslint/indent': [2, 2],
    'import/extensions': [
      'error',
      'ignorePackages',
      {
        js: 'never',
        jsx: 'never',
        ts: 'never',
        tsx: 'never',
        mjs: 'never',
      },
    ],
  },
};
我在哪下车?谢谢你的帮助。谢谢。

TLDR 在
tsconfig.json

答复1 在我看来,您可以在
tsconfig.json
中使用
typesroot
。 此配置

"compilerOptions": {
    ...
    "typeRoots" : ["./typings"]
    ...
  },

答复2
“/src/***.d.ts”

参考

  • 试过了,然后重新加载vscode以防万一不行。错误出现在.d.ts文件中,错误为@typescript eslint/parser设置了“parserOptions.project”。该文件与您的项目配置不匹配:src/models/User.d.ts。该文件必须包含在提供的至少一个项目中。eslintOh,我明白了,我将为你奋斗!在这里挣扎了一整天,朋友。用
    tsconfig.json
    中的
    /src/***/.d.ts
    修复
    include
    config怎么样?你试过吗?我试过“/src/models/*.ts”。让我试试这个。类型定义(filename.d.ts)的概念是当您希望类型可用于整个项目时。可能您使用的库没有其类型(即@types/lib name)。在您的情况下,您可以只定义一个启用了“ts”的文件,这样就可以轻松地导出和导入文件,而不必考虑类型定义的复杂性。如果仍要使用类型定义,请在tsconfig.json文件中定义“typeRoots”。您可以阅读更多关于它的信息,typeRoots解决方案是有效的。我在试着组织类型。我见过属于不同模块的index.d.ts类型的monolothic声明,这是一种痛苦。似乎在.ts文件中声明它所属的文件是更好的方法。
    "include": ["/src/**/*.ts", "**/src/**/*.ts", "**/__tests__/**/*.ts",  "/src/**/*.d.ts"]