我有一个.ts文件,其中包含使用模板声明的类。此类在两个应用程序(客户端和服务器)之间共享。每个应用程序都使用具有不同模板类型的此类。
我想用客户端的默认参数声明此类。
现在我这样做:
import {ISender, Base} from './ISender';
import {ClientSender} from '../client/src/app/interfaceImpl/ClientSender';
export class DFEnumBSTR<T extends ISender = ClientSender> extends Base<T>{
constructor(id: string, sender: new (id: string) => T) {
super(id, sender);
}
...
}
但是当我编译服务器应用程序时,它也会同时编译'../client/src/app/interfaceImpl/ClientSender'
及其所有依赖项。
是否可以忽略服务器项目的导入?
或者也许有某种类似C ++的方法,当您可以在.h文件中声明存在类型(class ClientSender;
)并通过在.cpp文件中包含该类型来指定该类型吗?
答案 0 :(得分:0)
我找到了解决方案。 在每个可以作为模板参数传递的类型附近,我应该添加类型别名:
export type Sender = ClientSender
并为每个项目配置“路径别名”。
对于Node.JS:https://dev.to/lars124/path-aliases-with-typescript-in-nodejs-4353
对于Angular:https://christianlydemann.com/simpler-typescript-paths-with-path-aliases/
现在我的共享模块如下:
import {ISender, Base} from './ISender';
import {Sender} from '@sender/';
export class DFEnumBSTR<T extends ISender = Sender> extends Base<T>{
constructor(id: string, sender: new (id: string) => T) {
super(id, sender);
}
...
}