我正在使用打字稿编写应用程序,我正在尝试强烈键入Object.assign
这样的调用:
let obj = new Author();
let x = Object.assign({}, obj);
我希望变量x
属于Author
类型。不幸的是,它的类型为Object
。
如果我这样做,我会得到一个合适的类型:
Object.assign<Author, Author>(new Author(), obj);
我甚至可以简化第一种类型的参数:
Object.assign<{}, Author>(new Author(), obj);
然而,这非常冗长(我需要手动指定类型)并强制我在分配之前创建Author
对象。有没有其他方法来实现这一目标?或者是否有其他方法在打印原型时复制打字稿中的对象?
答案 0 :(得分:1)
let test = {name: "value"};
let item = {hallo: "hallo", ...test};
也是这样的工作
// could be also defined as class
type Author = {name: string, value: string}
let authorValue = {value: "value"}
let authorName = {name: "name"}
let author: Author = {...authorName, ...authorValue};
当然,instanceof不起作用,因为这些类型不会被转换。
这里有一些更多的测试
class Author {
constructor(public name, public value) {}
}
let authorName = {name: "name"}
let author = new Author("Franz", "Value");
let combined: Author = { ...author, ...authorName }
// false
console.log(combined instanceof Author);
Object.assign(author, authorName);
// true
console.log(author instanceof Author);