gpt4 book ai didi

class - TypeScript - 将类存储为 map 值?

转载 作者:行者123 更新时间:2023-12-03 23:22:04 28 4
gpt4 key购买 nike

我的课很少。 Test~类扩展 FrameModel .

如何从 string 创建 map 到 FrameModel 的子类?

import FrameModel from '../../FrameModel';
import TestShipModel from './TestGeneratorModel';
import TestGeneratorModel from './TestGeneratorModel';
import TestPlanetModel from './TestGeneratorModel';

export class DiscriminatorMappingData
{
static mapping: { [key: string]: typeof FrameModel } = {
"TestShip": TestShipModel,
"TestGenerator": TestGeneratorModel,
"TestPlanet": TestPlanetModel,
}
}

这最终会出现错误:

DiscriminatorMappingData.ts(8,5): error TS2322: Type '{ [x: string]: typeof "...' is notassignable to type '{ [key: string]: typeof "...'。
索引签名不兼容。
类型 'typeof "...models/T...' 不可分配给类型 'typeof ".../FrameModel"'。
类型“.../models/T...”中缺少属性“FrameModel”。

我认为这可以用泛型来完成,但我不确定如何。

最佳答案

您可以使用基类 (FrameModel) 类型声明哈希表,并将后代类型用作实际值(为简单起见,我省略了模块):

class FrameModel {
}

class TestShipModel extends FrameModel {
}
class TestGeneratorModel extends FrameModel {
}
class TestPlanetModel extends FrameModel {
}

export class DiscriminatorMappingData
{
static mapping: { [key: string]: typeof FrameModel } = {
"TestShip": TestShipModel,
"TestGenerator": TestGeneratorModel,
"TestPlanet": TestPlanetModel,
}
}

此代码适用于 Typescript playground .

关于class - TypeScript - 将类存储为 map 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38715797/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com