手动添加声明文件(TypeScript)

Alo*_*lon 1 javascript google-sheets node.js typescript

我找不到“ google-spreadsheet”的声明文件,因此我尝试自己创建一个声明文件:

在输入->模块中,我添加了一个名为“ google-spreadsheet”的新文件夹,并在其中添加了一个名为“ index.d.ts”的新文件,其内容如下:

export class GoogleSpreadsheet {

}
Run Code Online (Sandbox Code Playgroud)

在客户端文件中,我有这个:

import * as GoogleSpreadsheet from 'google-spreadsheet';
Run Code Online (Sandbox Code Playgroud)

但是“ google-spreadsheet”用红色标记,表示:

TS2307找不到模块“ google-spreadsheet”。

顺便说一句,我已经NPM安装了“ google-spreadsheet”,它可以使用JavaScript。这里只有TypeScript困扰我。

任何想法如何解决?

Fed*_*ico 25

从项目的根目录开始:

  1. mkdir -p src/@types/google-spreadsheet- 为模块的类型声明创建一个文件夹。
  2. echo "declare module 'google-spreadsheet';" > src/@types/google-spreadsheet/index.d.ts

另外,请确保您的配置已使用typeRoots 选项tsconfig包含文件夹。@types

{
  "compilerOptions": {
    "typeRoots": ["src/@types", "node_modules/@types"]
  }
}
Run Code Online (Sandbox Code Playgroud)

另外,您可能想查看有关声明文件的文档


Diu*_*lei 6

如果您不需要关心此模块内的类型,则只能创建一个*.d.ts文件并放入以下内容(例如,创建types.d.ts):

declare module 'google-spreadsheet';
Run Code Online (Sandbox Code Playgroud)

要定义模块内部的类型,可以将以上代码更改为:

declare module 'google-spreadsheet' {
    // define the types...
}
Run Code Online (Sandbox Code Playgroud)

  • 我在我的 `src` 中创建了 `@types/<module_name>` 目录,并将 `index.d.ts` 文件放在那里,上面有一行。有效。 (6认同)
  • 您将.d.ts文件放在哪里?无论我放在哪里,TS似乎都找不到。 (2认同)