// app.ts  使⽤三斜线指令引⼊声明⽂件///import a, {geta, seta}from'simple'console.log(a)
// /node_modules/simple/lib1.js// 导出⼀个类functionAb(){this.a =1}Ab.prototype.seta =function(num){this.a =
num}a =function(num){returnthis.a}exports.Ab = Ab
// 在type.d.ts⽂件中添加declare module"simple/lib1"{  exportclassAb {    private a;    seta(n: number):void;    geta(): number  }}
// app.ts  使⽤三斜线指令引⼊声明⽂件/// importa, {geta, seta}from'simple'import {Ab}from'simple/lib1'// 得以验证
console.log(newAb())console.log(a)
javascript的特性// /node_modules/simple/lib2.js// 只导出⼀个函数ports =functiongetRandom(){returnMath.random()}
//在type.d.ts⽂件中添加declaremodule"simple/lib2"{letgetRandom:()=>number;export= getRandom;}
/
/ app.ts  使⽤三斜线指令引⼊声明⽂件/// import a, {geta, seta} from'simple'import {Ab} from'simple/lib1'import getRandom
=require('simple/lib2')// 得以验证console.log(getRandom())console.log(newAb())console.log(a)
上⾯给出的只是全局声明的写法,下⾯会针对上⾯的js库重新换成模块导出声明的写法
即使去除该指令types.d.ts⽂件还在的话
⽬录改成如下形式,app.ts⽂件⽆需做⼤的改动只需要将三斜线指令去除即可,⼀般情况下即使去除该指令types.d.ts⽂件还在的话TypeScript编译器还是会将该⽂件加载编译
TypeScript编译器还是会将该⽂件加载编译,这与配置有关。
并且根据我的观察发现,修改声明⽂件并不会马上起作⽤,⽐如在声明⽂件中加了⼀个⽅法,在使⽤的时候TypeScript编译器还是会报错说这个类型没有这个⽅法,需要重启webpack-dev-server(我⽤的是这个)
// ⽂件⽬录结构如下-- project |-- node_modules  |-- simple    |-- index.js    |-- index.d.ts    |-- lib1.js    |-- lib1.d.ts    |-- lib2.js    |--lib2.d.ts |-- src  |-- app.ts
// index.d.tslet a: number;exportfunctiongeta(): void;exportfunctionseta(n: number): void;exportdefaulta;
// app.tsimporta, {geta, seta}from'simple'// 得以验证console.log(geta())
//lib1.d.tsfunctionAb(){this.a =1}Ab.prototype.seta =function(num){this.a = num}a =function()
{returnthis.a}exports.Ab = Ab

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。