首页 > 解决方案 > 断言变量已定义

问题描述

我有时必须处理定义如下的对象:

value: T | undefined

在代码中的某个时刻,我知道这value不可能undefined,我只想将它作为T. 为此,我通常创建这种方法:

public static getDefinedValue<T>(value: T | undefined): T {
  if (value) {
    return value;
  } else {
    throw Error('Yolo')
  }
}

但我觉得我的需要是通用的。是否有内置函数或更简洁的语法已经可以做到这一点?

标签: angulartypescript

解决方案


如您所知,它们已定义,您可以使用as直接键入它。它被称为类型断言

它看起来像(value as T),您可以将其“铸造”为您想要的类型。

你可以在这里查看它是如何工作的:

https://www.typescriptlang.org/docs/handbook/basic-types.html

如果您仍然想确保未定义该值,您可以执行以下操作:

if (value)  { (values as T)....}

推荐阅读