Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将js文件加载到typescript文件中_Typescript - Fatal编程技术网

将js文件加载到typescript文件中

将js文件加载到typescript文件中,typescript,Typescript,我有一个简单的TypeScript(ts),它需要一个JavaScript文件中的函数。如何将js文件导入ts文件?我是否必须为该js文件创建一个ts文件才能在我的ts文件中使用它?最简单的方法是声明您正在使用的函数: File1.js function greet() { return "Hello!"; } declare function greet(): string; /* ... later ... */ var hi = greet(); function greet():

我有一个简单的TypeScript(ts),它需要一个JavaScript文件中的函数。如何将js文件导入ts文件?我是否必须为该js文件创建一个ts文件才能在我的ts文件中使用它?

最简单的方法是声明您正在使用的函数:

File1.js

function greet() { return "Hello!"; }
declare function greet(): string;

/* ... later ... */
var hi = greet();
function greet(): string;
/// <reference path="File1.d.ts" />

/* ... later ... */
var hi = greet();
File2.ts

function greet() { return "Hello!"; }
declare function greet(): string;

/* ... later ... */
var hi = greet();
function greet(): string;
/// <reference path="File1.d.ts" />

/* ... later ... */
var hi = greet();

如果您的场景更复杂(即多个文件引用File1.js,或者File1.js中有许多函数会使File2.ts变得混乱),您可以创建一个File1.d.ts文件,并从File2.ts引用该文件:

File1.d.ts

function greet() { return "Hello!"; }
declare function greet(): string;

/* ... later ... */
var hi = greet();
function greet(): string;
/// <reference path="File1.d.ts" />

/* ... later ... */
var hi = greet();
File2.ts

function greet() { return "Hello!"; }
declare function greet(): string;

/* ... later ... */
var hi = greet();
function greet(): string;
/// <reference path="File1.d.ts" />

/* ... later ... */
var hi = greet();
//
/* ... 后来*/
var hi=greet();

仅针对归档文件,如果在TS文件中添加JavaScript文件的///ref,编译器将尝试验证JS文件中的所有代码,并抛出一个巨大的错误列表。用jQuery或类似的工具试试看,你就会明白我的意思。

嗨,Ryan,谢谢你,这很管用!然而,我使用的一个文件将方法添加到了数学库中。因此Math.uuid.js文件中有三种方法;uuid()返回字符串,其他两个。。。TS抱怨这个“声明函数Math.uuid():string;”(显然)。我将如何引入这些方法?谢谢找到了!我声明了这个接口。。。接口数学{uuid():string;},一切正常。有没有办法从.js文件自动生成*.d.ts文件?谢谢-dave@DavidThielen一些很好的解释为什么在这里不容易做到这一点。我相信关于这个主题的文章还有很多,但这满足了我的问题,我已经看到了。我将declare var$放在没有jquery.ts文件的项目中,不包括该ref。这是为没有.d.ts文件的任何类型添加支持的最快方法。定义文件的好处是您可以获得Intellisense。我一直使用定义类型的文件,这是一个伟大的项目。它甚至不允许您这样做(我不确定自2012年以来是否发生了更改)-您得到了
错误的引用:只允许扩展名为.ts的文件
-或者您打算将.js重命名为.ts。无论哪种方式,你都肯定是对的,你弄得一团糟:-)