我正在开发一款游戏,我们为数学类型广泛使用了类型数组(Float32Arrays).我们从JSON保存并加载游戏状态.JSON stringify输出的一个例子就是这样一个数组(在Chrome中)是:
"{"0":0,"1":0,"2":0,"length":3,"byteLength":12,"byteOffset":0,"buffer":{"byteLength":12}}"
Run Code Online (Sandbox Code Playgroud)
这会浪费空间并导致它们作为不方便的对象被加载.理想情况下,我们可以使用stringify'replacer'函数来测试变量是否是类型化数组,然后在这种情况下将其转换为bog标准数组.不幸的是,我不确定如何可靠地测试变量是否是类型化数组.
有帮助吗?
到目前为止,我已经尝试过:
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;
}
Run Code Online (Sandbox Code Playgroud)
但是这给出了一个编译器警告:"索引签名参数类型必须是'string'或'number'".
也许可以将密钥类型约束为数字或字符串?或者只是将两种类型作为键重载?