Fen*_*ton 59
JavaScript并不总是包含足够的TypeScript编译器类型信息来推断代码中的结构 - 因此很少自动生成基于JavaScript的定义.
这里有关于如何从头开始编写它们的说明:
https://www.stevefenton.co.uk/2013/01/complex-typescript-definitions-made-easy/
但是有一个可行的技巧(它仅适用于有限的一组案例).
如果您将JavaScript粘贴到新的TypeScript文件中,修复您可能获得的任何琐碎错误并使用定义标志进行编译,它可能会为您提供至少是起点的文件.
tsc --declaration js.ts
Run Code Online (Sandbox Code Playgroud)
如果您尝试在TypeScript文件中使用第三方JavaScript库,则可以在项目中的任何位置创建自定义(几乎空白)声明文件。
例如,如果要导入:
import * as fooLibrary from 'foo-lib';
Run Code Online (Sandbox Code Playgroud)
您将创建一个名为“ foo-lib.d.ts”的新文件,其内容如下:
declare module 'foo-lib' {
var fooLibrary: any;
export = fooLibrary;
}
Run Code Online (Sandbox Code Playgroud)
对于我使用来自第三方的混淆代码的特殊情况,我发现在页面中加载脚本很有用,然后使用控制台记录混淆类的实例。控制台为您提供了类方法和属性的简洁摘要,您可以将它们复制并用作定义文件的起点。
> o = new ObfuscatedClass()
> console.log(o)
ObfuscatedClass
- methodA(a,b){some implementation}
- methodB(a,b){other implementation} etc
Run Code Online (Sandbox Code Playgroud)
您可以复制粘贴并编辑到
declare class ObfuscatedClass {
methodA(a,b);
methodB(a,b);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
52984 次 |
| 最近记录: |