打字稿。两个项目之间共享的类的模板默认值

时间:2019-06-05 11:51:23

标签: typescript templates

我有一个.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文件中包含该类型来指定该类型吗?

1 个答案:

答案 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);
    }
...
}