【发布时间】:2020-05-14 17:13:57
【问题描述】:
我想创建一个循环遍历对象中的键/值对并返回具有相同键的对象的函数,但现在每个值都变成了一个函数。我想确保打字稿正确掌握返回的对象以进行自动完成。这适用于以下愚蠢的功能:
interface Args {
[layer: string]: Boolean
}
function sillyFunction<T extends Args>(layers: T): T {
return layers
}
sillyFunction({ layerName: true }).layerName // this works
但现在我有以下代码,其中层对象(键/布尔对)用于创建具有键/函数对的新 returnObject。:
interface Args {
[layer: string]: Boolean
}
interface ReturnedObject {
[layer: string]: Function
}
function createFunctions<T extends Args>(layers: T): T {
let returnObj = {} as ReturnedObject;
for (let layer in layers) {
returnObj[layer] = (label) => `${layer} ${label}`
}
return returnObj;
}
createFunctions({ layerName: true }).layerName // doesnt work
这显然给了我错误'ReturnedObject' is not assignable to type T。我如何确保打字稿'理解'对象内的键仍然相同,但值已成为函数?
【问题讨论】:
标签: typescript