我已经在我的文章中定义了这些.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>

然后在测试中.js:

 var myTree = Tree.tree({})

但是Typescript错误地说:"找不到名称‘Tree’"

我还试着用--module amd进行编译,并将import Tree = require("model/tree");放在测试的顶部.然而,这里定义了一个有效的文件:js:Cannot find external module 'model/tree'.

我确实想写作.d、 对于我想使用的每一个外部javascript文件,这真的是Typescript想要我做的吗?

推荐答案

我不想写.d、 对于我想使用的每一个外部javascript文件,这真的是Typescript想要我做的吗?

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

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

TypeSafety是TypeScript中的一个滑动比例.在本例中,您只是告诉编译器,您将管理一个名为Tree的东西,除了it is there之外,您不关心太多的类型安全性.

More

IMHO:与其他JS功能工具相比,第declare var Tree:any;行的语法要简单得多,您可以编写它来声明代码中不存在的变量的用法.

Update

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

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

declare var Tree: ITreeFactory; // magic...

Typescript相关问答推荐

使用`renderToPipeableStream`时如何正确恢复服务器端Apollo缓存?

类型脚本基于数组作为泛型参数展开类型

如何获取受类型脚本泛型约束的有效输入参数

如何创建由空格连接的多个字符串的类型

从非文字数组(object.keys和array.map)派生联合类型

Typescript将键数组映射到属性数组

如何键入并类型的函数&S各属性

为什么在这种情况下,打字脚本泛型无法正确自动完成?

Cypress-验证别名的存在或将别名中的文本与';if';语句中的字符串进行比较

如何使用警告实现`RecursiveReadonly<;T>;`,如果`T`是原语,则返回`T`而不是`RecursiveReadonly<;T>;`

typescript如何从映射类型推断

如何实现允许扩展泛型函数参数的类型

如何在TypeScript中描述和实现包含特定属性的函数?

通过函数传递确切的类型,但验证额外的字段

React Context TypeScript错误:属性';firstName';在类型';iCards|iSearch';

如何键入';v型';

TypeScript是否不知道其他函数内部的类型判断?

如何将 .webp 文件加载到 TypeScript 文件中以便稍后在 Angular 项目中使用?

为什么map.has()不充当类型保护

更新自定义挂钩内的状态不会反映在订阅组件中