gpt4 book ai didi

typescript - 在 TypeScript 中引用外部模块

转载 作者:搜寻专家 更新时间:2023-10-30 20:54:10 24 4
gpt4 key购买 nike

我有一个应用程序,我想逐步将其转换为 TypeScript。目前我们正在使用 browserify 生成一个包。

在转换为 TypeScript 时,我有一些模块尚未转换。在TypeScript Handbook它说我可以在为其指定类型定义文件时引用外部模块。

我有一个尚未转换为 TypeScript 的模块 A.js。我有一个全局类型定义文件,它定义了

declare module "A" {
export function foo();
export function bar();
}

我正在这样导入我的模块:

///<reference path="../../typings/NotYetConvertedModules.d.ts" />
import A = require('../someFolder/A');

编译时我得到了

error TS2307: Cannot find external module '../someFolder/A'

当用 require('A') 要求它时,编译步骤有效但模块加载器找不到文件,因为我没有它的全局别名。

有什么办法可以解决吗?

最佳答案

当您在引号中声明模块名称时,引号中的名称将成为别名。所以当你写...

declare module 'A' { //...

您使用以下方式导入它(无论您将它导入到哪里):

import a = require('A');

例如,这在为 node.js 模块创建定义时很有用。

您不能将字符串别名与相对路径一起使用,因此您不能:

declare module '../SomeFolder/A' { //...

但是你可以在适当的位置(SomeFolder)放置一个名为a.d.ts的定义文件。

文件 ./SomeFolder/a.d.ts 如下所示:

declare module A {
export function foo();
export function bar();
}

export = A;

文件 ./Scripts/AnotherFolder/example.ts 如下所示:

import A = require('../../SomeFolder/A'); 

您将需要根据您的确切文件夹结构调整路径,但您可以看到这个想法。重要的是,从与定义文件相同的文件夹中导入模块时,您不需要 reference 注释。

关于typescript - 在 TypeScript 中引用外部模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28152215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com