Sam*_*adi 14 javascript declare typescript
我怎么能声明一个如下所示的第三方模块:
在第三方模块中:
module.exports = function foo(){
// do somthing
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中:
import * as foo from 'foo-module'; // Can not find a declaration module for ...
foo();
Run Code Online (Sandbox Code Playgroud)
Aar*_*all 24
如何编写声明在很大程度上取决于模块的编写方式和导出的内容.您给出的示例实际上并不是有效的ES6模块,因为ES6无法将函数导出为模块(它只能导出函数成员或默认函数).
你可以module.exports = ...在这样的esModuleInterop文件中声明你:
{
"compilerOptions" {
...
"esModuleInterop": true,
...
}
}
Run Code Online (Sandbox Code Playgroud)
并按照您的意愿导入:
declare module "foo-module" {
function foo(): void;
export = foo;
}
Run Code Online (Sandbox Code Playgroud)
或者像这样:
import * as foo from "foo-module";
foo();
Run Code Online (Sandbox Code Playgroud)
我有类似的问题。并努力向我的项目添加类型定义。最后,我通过以下步骤实现了它。
\n这是一些模块(只有常量),我们称它为some-module- node_modules/some-module/index.js。
'use strict';\n\nexports.__esModule = true;\nvar APPS = exports.APPS = {\n ona: 'ona',\n tacq: 'tacq',\n inetAcq: 'inetAcq'\n};\nRun Code Online (Sandbox Code Playgroud)\n首先我添加到 tsconfig.jsonbaseUrl并typeRoots
{\n ...\n "compilerOptions": {\n ...\n "baseUrl": "types",\n "typeRoots": ["types"]\n }\n ...\n}\nRun Code Online (Sandbox Code Playgroud)\ntypes其次,在我的项目根目录中,我为模块创建具有相同文件夹结构的文件夹types/some-module/index.js文件夹并放置代码:
declare\xc2\xa0module\xc2\xa0'some-module' {\n type Apps = {\n ona: string;\n tacq: string;\n inetAcq: string;\n };\n let APPS: Apps\n}\nRun Code Online (Sandbox Code Playgroud)\n最后我可以将它导入到我的my-file.ts打字将其导入!
import { APPS } from 'some-module';\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
18537 次 |
| 最近记录: |