TS怎么调用JS封装的各种库?以及其它各种js代码?
https://github.com/DefinitelyTyped/DefinitelyTyped
很多js类库的d.ts声明,如果没有的话,只能自己手写了,或者declare var来解决- -
你可以手写一份,贡献上去- -
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里面会标红,我的强迫症有点受不了,我准备试试楼上的方法看看
你给我的这个键接是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吧
来来来,给个demo学习一哈
直接把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’);这段代码给标红了,而且没有代码提示,但也是可以正常使用