如何告诉typescript值存在?
我有以下代码如何告诉typescript值存在?,typescript,Typescript,我有以下代码 options: { url?: string } = {}; if (!Checker.present(this.options.url)) { throw new Error('Options must have a url'); } new CustomUrl(this.options) 但是我得到了一个错误,因为CustomUrl需要一个url,并且我的接口是可选的 我的checked函数如下所示 static present(va
options: { url?: string } = {};
if (!Checker.present(this.options.url)) {
throw new Error('Options must have a url');
}
new CustomUrl(this.options)
但是我得到了一个错误,因为CustomUrl需要一个url,并且我的接口是可选的
我的checked函数如下所示
static present(value: any) {
return value !== undefined && value !== null;
}
但我如何告诉typescript我检查了,并且该值存在?算着我不能用这个!在我的代码中,使用as断言对象具有url属性:
new CustomUrl(this.options as { url: string });
new CustomUrl(this.options as Options & { url: string });
对于更一般的情况,可以使用&{url:string}将可选接口与所需的url属性组合:
new CustomUrl(this.options as { url: string });
new CustomUrl(this.options as Options & { url: string });
其中Options是初始选项的类型。使用as断言对象具有url属性:
new CustomUrl(this.options as { url: string });
new CustomUrl(this.options as Options & { url: string });
对于更一般的情况,可以使用&{url:string}将可选接口与所需的url属性组合:
new CustomUrl(this.options as { url: string });
new CustomUrl(this.options as Options & { url: string });
其中选项是初始选项的类型。一种方法是。
您需要在CustomUrl函数内部而不是外部断言url的存在
interface IOpt{
{ url?: string }
}
function CustomUrl(opt:Required<IOpt>){
}
另一种方式。
您需要将CustomUrl参数更改为Required
interface IOpt{
{ url?: string }
}
function CustomUrl(opt:Required<IOpt>){
}
一种方法是。
您需要在CustomUrl函数内部而不是外部断言url的存在
interface IOpt{
{ url?: string }
}
function CustomUrl(opt:Required<IOpt>){
}
另一种方式。
您需要将CustomUrl参数更改为Required
interface IOpt{
{ url?: string }
}
function CustomUrl(opt:Required<IOpt>){
}
对于这个简单的例子,好的,但是如果在我的例子中,类型非常大,我必须用一个接口创建两个接口吗?还有一个没有?这是唯一的方法吗?您也可以使用&与所需的属性组合。对于这个简单的示例,好的,但是如果在我的示例中类型非常大,我是否必须使用两个接口?还有一个没有?是唯一的方法吗?您还可以使用&与所需的属性组合。如果您可以更改其检查部分,请在TS文档中查找自定义/用户定义的类型保护。如果您可以更改其检查部分,请在TS文档中查找自定义/用户定义的类型保护。