我在Typescript中有一个常量类,它具有以下内容。

export class Constants {
    public static readonly SERVER_1: string = "server url 1";
    public static readonly SERVER_2: string = "server url 2";
    public static readonly SERVER_3: string = "server url 3";
    .....
    public static readonly SERVER_21: string = "server url 21";
}
在我的Processor类中,我需要形成对象,然后插入这样的数组进行处理。
export class Processor {

    public areReachable(): void {
        const myObject1: ServerReachObject1 = new ServerReachObject(Constants.SERVER_1);
        const myObject2: ServerReachObject2 = new ServerReachObject(Constants.SERVER_2);
        const myObject3: ServerReachObject3 = new ServerReachObject(Constants.SERVER_3);
        .....
        const myObject21: ServerReachObject21 = new ServerReachObject(Constants.SERVER_21);
        const sModelArray: DNSServerModelInfo[] = [];
        ftpModelServerArray.push(myObject1, myObject2, myObject3 ..... myObject21);
    }

}
有没有更好的方法可以编写以上内容。将来可能会添加服务器。
我的高级团队成员建议我以更好的方式写作。请建议我,并帮助我。
我试图这样写。
for (let i = 1; i < 22; i++) {
    const dynamicServerName = Constants + ".SERVER_"+i;
    const myObject1: ServerReachObject = new ServerReachObject(dynamicServerName);
    const sModelArray: DNSServerModelInfo[] = [];
    ftpModelServerArray.push(sModelArray);
}
但这是行不通的。我的目标是从Constant类动态地形成字符串,而不是手动一个接一个地声明。
请帮我。

最佳答案

请考虑使用const对象,而不是带有const字段的类。然后,您可以使用Object.values()迭代服务器url值。

type ServerConstants = {
    readonly [name: string]: string;
}

export const Server: ServerConstants = {
    SERVER_1: 'Server url 1',
    SERVER_2: 'Server url 2'
}

Server.SERVER_1 = 'foo'; // throws error correctly because of readonly in ServerConstants type

Object.values(Server).forEach(value => console.log(value));

关于javascript - 如何在Javascript和Typescript中动态形成常量字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64132918/

10-09 23:25