TS怎么调用JS封装的各种库?

TS怎么调用JS封装的各种库?以及其它各种js代码?

4赞

https://github.com/DefinitelyTyped/DefinitelyTyped
很多js类库的d.ts声明,如果没有的话,只能自己手写了,或者declare var来解决- -
你可以手写一份,贡献上去- -:joy:

2赞

let MD5 = require(’…/lib/md5’);

然后在md5.js的末尾加上:
module.exports = {
hex_md5 : hex_md5,
};

你的库根据需要导出你需要的函数就可以了。

又比如int64.js库,在末尾加上:
module.exports=Int64;
导出Int64这个模块。
使用的地方也是一样的:
let Int64 = require(’./Int64’);

1赞

用你的方法在VS code里面会标红,我的强迫症有点受不了,我准备试试楼上的方法看看

你给我的这个键接是JS可以直接用的库吧?所以只要声明一个d.ts就可以直接调用了?如果有这种情况,在网上找了一个别人封装的.js脚本我想在TS中直接调用,但是我不知道怎么封装d.ts声明的话,有没有教程啊?

目前没什么好的js反推ts的工具,js本身是没有类型的,转成ts很多也是any来定义- -。
如果简单的话,直接用any吧。
如果第三方的js库使用的接口不多的话,手写一份d.ts文件也行。

d.ts文件随便拿一份,照样子写就可以了。
想深入一些呢,建议去看看typescript的文档。

好的,我已经明白了,谢谢

我有个请求,看了你给的键接后我基本上是懂了要怎么去弄了,但是实践起来不知道怎么加到creator里面去,你能不能给个简单的demo啊

var xxx = cc.require(‘xxx’)

TS不能这样用吧!

导入是可以正常导入的,或者有些库可以导入为插件,然会自己写.d.ts就可以了

好吧,那只能用这个办法了

笑而不语

别笑我这个菜鸟了,来点实际点的指点

跟我一样写global.d.ts吧:grin:

来来来,给个demo学习一哈:grin:

直接把js的后缀改为ts?不知道能不能用。。。

我试过了,如果把后缀从js改成ts那你就需要把代码也进行修改,这不是个好方法

做一个ts调用js库的总结,避免以后有谁再像我一样的迷茫摸索,ts调用js代码的方法有两个:

1.推荐使用的方法:网上有很多JS的公用库可以把这些库拿到项目中,并且把库小改一下,改成全局变量如:window.xxx = xxx,然后创建一个对应的xxx.d.ts声明文件,使用declare class xxx{},并且在这里xxx里面定义对应的方法或变量声明即可如(这只是我举的例子,实际变量与方法和跟实际的xxx来声明):
declare class xxx{

//初始化
constructor(value:number);

toNumber():number;

toString(radix:number):string;

isZero():boolean;

value:number;

}

这样就可以在其它脚本里面这样用了:
let aa = new xxx(156);
aa.toNumber();

楼上网友提供的这个网址虽然不能直接用,但是可以拿来参与一下:https://github.com/DefinitelyTyped/DefinitelyTyped24
还有cocos creator的creator.d.ts文件里面的声明方式也可以学习参考。

2.如果不想用.d.ts声明也可以直接按楼上的方法这样用:
let MD5 = require(’…/lib/md5’);

然后在md5.js的末尾加上:
module.exports = {
hex_md5 : hex_md5,
};

你的库根据需要导出你需要的函数就可以了。

又比如int64.js库,在末尾加上:
module.exports=Int64;
导出Int64这个模块。
使用的地方也是一样的:
let Int64 = require(’./Int64’);
虽然vs code编译器把let Int64 = require(’./Int64’);这段代码给标红了,而且没有代码提示,但也是可以正常使用

10赞