我有一个函数,它接受一个字符串数组并返回一个对象数组。需要根据输入键入这些对象。
每个输入都有自己的类型。
这是我在playground中使用的代码来测试它
interface SerializedStrings extends Array<string> { }
interface SerializedSpawns extends SerializedStrings { }
interface SerializedContainers extends SerializedStrings { }
interface Structure extends String { }
interface StructureSpawn extends Structure { }
interface StructureContainer extends Structure { }
let spawnIDs = <SerializedSpawns>[
"abcdef",
"ghijkl"
]
let containerIDs = <SerializedContainers>[
"abcdef",
"ghijkl"
]
function inflate(input: SerializedContainers): StructureContainer[]
function inflate(input: SerializedSpawns): StructureSpawn[]
function inflate(input: SerializedStrings): Structure[]{
let output = input.map(function (value) {
return "spawn-" + value
})
return output
}
let spawns = inflate(spawnIDs)
let containers = inflate(containerIDs)
spawns
的类型应为StructureSpawn[]
,容器的类型应为StructureContainer[]
,但它们的类型StructureContainer[]
只是列表中的第一个。
如何让输出类型依赖于输入类型?