到目前为止我已经尝试过:
function copyObject<K, V> (object: { [k: K]: V; }) {
var objectCopy = {};
for (var key in object)
{
if (object.hasOwnProperty(key))
{
objectCopy[key] = object[key];
}
}
return objectCopy;
}
但这会给出编译器警告:“索引签名参数类型必须是‘字符串’或‘数字’”。
也许可以将键类型限制为数字或字符串?或者只是用两种类型作为键重载它?
最佳答案
您可以简单地执行以下操作:
function copyObject<T> (object:T): T {
var objectCopy = <T>{};
for (var key in object)
{
if (object.hasOwnProperty(key))
{
objectCopy[key] = object[key];
}
}
return objectCopy;
}
和用法:
// usage:
var foo = {
bar: 123
};
var baz = copyObject(foo);
baz.bar = 456;
关于generics - 你能用 typescript 写一个通用的复制对象函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22247799/