根据输入类型设置输出类型

时间:2017-07-26 10:38:53

标签: typescript

我有一个函数,它接受一个字符串数组并返回一个对象数组。需要根据输入键入这些对象。

每个输入都有自己的类型。

这是我在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[]只是列表中的第一个。

如何让输出类型依赖于输入类型?

0 个答案:

没有答案