首页 > 解决方案 > 声明后面明确定义的可选值

问题描述

假设我定义了一个这样的接口

interface User {
  name: string;
  address?: SomeObject;
}

在后面的代码中,我肯定通过一些动态过程来定义它。因为我不能/不想最初用虚拟对象定义它。

然后我想在函数中这样使用它

const foo=(name:string, address: SomeObject)=>{
   console.log(address);
}

如果我这样使用它

foo(user.name, user.address)

我会得到 param2 可能是未定义的。

如果我这样做

const foo=(name:string, address?: SomeObject)=>{
   console.log(address);
}

然后我可以调用该函数,但我必须检查函数体内是否定义了地址。

我想知道我是否可以这样

const foo=(name:string, address: SomeObject)=>{
       console.log(address);
    }
foo(user.name, user.address!) //where ! is a made up operator that says this object is definitely defined.

tldr:我想知道是否有办法告诉 TS,这个可能未定义的值肯定是由这次执行时间定义的。

标签: typescript

解决方案


推荐阅读