如何在TS中通过扩展语法传递克隆的参数?

时间:2018-12-24 02:59:30

标签: typescript

这是我的代码。

interface myObj {
  name?: string,
  age?: number,
  address?: string
}

const obj1: myObj = { age: 12 }
const obj2 = { name: 'jack' }
const obj3: myObj = { ...obj1, ...obj2 }

const printOut = (msg: string): void => {
  console.log(msg)
}

printOut(obj3.name)

我收到一条错误消息

TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'. Type 'undefined' is not assignable to type 'string'.

在线 printOut(obj3.name)

感谢帮助!

2 个答案:

答案 0 :(得分:0)

由于错误正试图告诉您,.name上的myObj可能是undefined,因此您不能将其作为string传递。

您可以从声明中删除: myObj,以让编译器推断变量的类型,在这种情况下,它将推断(由于类型obj2name是{ {1}}。

答案 1 :(得分:0)

我解决了!基本上,删除name键后面的问号。由于我正在使用此name键,因此它不应该是maybe类型。