当前位置: 首页 > 知识库问答 >
问题:

如何使用外部非打字稿库从打字稿没有。d.ts?

佘修为
2023-03-14

我已经在我的.html文件中定义了这些:

<script type="text/javascript" src="bower_components/tree.js/tree.min.js"></script>
<script type="text/javascript" src="bower_components/q/q.js"></script>
<script type="text/javascript" src="test.js"></script>

然后在test.js:

 var myTree = Tree.tree({})

但Typescript错误地指出:“找不到名称‘树’”

我也尝试编译-模块amd和放置导入树=要求(模型/树);在test.js文件的顶部,但它再次出错:找不到外部模块'模型/树'。

我不想为我想使用的每个外部javascript文件编写. d.ts文件,这真的是Typescript想要我做的吗?


共有2个答案

子车青青
2023-03-14

您可以自己定义“require”并使用TypeScript的未记录和依赖特性:

/// <amd-dependency path="model/tree" />
declare var require:(moduleId:string) => any;
var Tree = require("model/tree");

“amd-dependency”指令将告诉编译器在生成的代码中包含您的模块来“定义”参数:参见这里的示例。

您还可以查看一篇非常好的文章,该文章解释了如何将TypeScript与

但请注意,如果没有为现有代码编写正确的TypeScript定义,您将无法获得任何类型信息,因此您将无法在工具中进行类型安全检查、高级代码完成等。因此,您的“树”实际上是“any”类型,实际上是其他TS代码中的动态JS片段。

吴星汉
2023-03-14

我不想为我想使用的每个外部javascript文件编写. d.ts文件,这真的是Typescript想要我做的吗?

不。最简单/最快的解决方案就是告诉它有一些变量Tree。这很简单:

declare var Tree:any; // Magic
var myTree = Tree.tree({})

TypeSafety是TypeScript中的滑动刻度。在这种情况下,您只是告诉编译器,有一个名为Tree的东西,您将管理它,除了它存在的事实之外,您不关心太多类型安全性。

恕我直言:声明 var Tree:any; 这一行的语法比其他 JS veficiation 工具要简单得多,它会让你编写来声明你对代码中不存在的变量的使用。

interface ITree {
    .. further methods and properties...
}

interface ITreeFactory {
    tree(input: { [key: string]: any }): Itree
};

declare var Tree: ITreeFactory; // magic...
 类似资料:
  • 我正在努力寻找 有什么不同?

  • 问题内容: 我希望能够实例化一个Typescript类,在运行时可以获取该类和构造函数的详细信息。我想编写的函数将包含类名和构造函数参数。 问题答案: 您可以尝试: 编辑 此版本可在TypeScript操场上使用,例如:

  • 我正在学习Typescript,并尝试实现一个简单的React/Redux应用程序。当我使用同步操作时,它工作得很好,但问题在于异步操作。我正在学习官方的redux教程。 首先,我宣布会议状态 然后我为这个动作声明接口 我使用联合类型导出它们

  • 问题内容: 我正在尝试打字稿。在hello世界阶段它工作正常。我现在正在尝试使用npm模块: = 这不起作用: -> -> 看着打字稿文档和谷歌没有帮助。其他S /O问题未得到回答 元素: 打字稿1.8最新 是的,lodash已安装并存在于我的文件系统中(已选中) 我也做了 变种或不起作用 我试图调整tsconfig.json选择在其他的答案建议 ,并在一些答案建议,仍然无法正常工作 我们如何在打

  • 问题内容: 我在这里找到了解决方案:Webpack和Typescript图像导入 但我为此得到错误: 我想我需要以某种方式强制导入,但无法弄清楚如何。我在React中做到这一点。我看到该属性定义为,这就是为什么会弹出错误。 这是代码: HTML: 并基于上述解决方案进行定义: tsconfig: 问题答案: 摆脱该错误的一种方法是通过按如下方式修改d.ts文件: 去掉 或者您可以执行以下操作: 更

  • 问题内容: 在我的react和typescript应用程序中,我使用:。 我如何正确定义类的类型,这样我就不必用来绕过类型系统了? 如果我把我得到: 问题答案: 通常,事件处理程序应使用,例如: 您可以在这里阅读原因(还原“使SyntheticEvent.target通用,而不是SyntheticEvent.currentTarget。”)。 UPD:如@ roger-gusmao所述,它更适合于