最近调研VSCode的插件开发,选择typescript语言,看了typescript的官方的指导手册关于namespace的使用方式,我尝试类官方给出的一个文件和多个文件场景下使用namespace 。
结果一个文件使用namesapce没有问题,但是多个文件共享namespace,VSCode的语法提示总是提示找不到xxxx。
重点说明下,插件工程使用yo code
创建的,namespace的示例也是官方的,官方的多个文件共享一个命名空间的方法是使用/// <reference path = "xxxx.ts" />
指令。
百思不解,百度依然不解。幸好与多年的c++经验,借鉴c++的namespace中导入符号的方法,我找到类一条可行的路—-综合利用nameapce
, import as
, extends
,示意如下:
a.ts内容
//a.ts
export class A {
}
b.ts内容
//b.ts
export class B {
}
c.ts内容
//c.ts
export class C {
}
然后创建一个聚合的ts文件,将 a,b,c的符号以子类继承方式聚合
my.ts
//my.ts
import * as _a from 'a';
import * as _b from 'b';
import * as _c from 'c';
expport namespace my {
export class A extends _a.A {}
export class B extends _b.B {}
export class C extends _c.C {}
}
使用示意:
import {my} from 'my';
let tmp = new my.A();