[英]TypeScript - storing a class as a map value?
我上課很少。 Test~
類擴展了FrameModel
。
如何從string
到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):錯誤TS2322:類型'{[x:string]:typeof“...'不能分配給'{[key:string]:typeof”......'。
索引簽名不兼容。
類型'typeof'... models / T ...'不能分配給'typeof'... / FrameModel''。
類型'typeof'... / 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操場 。
(參考評論,這里是解決問題的方法。)
問題似乎與import
語句有關,導入類時應包括大括號。 例如import {FrameModel}...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.