如何在Typescript中声明一个可为空的对象文字变量?

时间:2017-03-28 17:38:23

标签: typescript

在typescript 2.2中,当strictNullChecks选项为true时,如何声明可为空的对象文字变量:

spring.jpa.database-platform: org.hibernate.dialect.MySQL5InnoDBDialect

spring.jpa.properties.hibernate.dialect: org.hibernate.dialect.MySQL5InnoDBDialect

我找到的唯一方法是:

let myVar = { a: 1, b: 2 };
myVar = null; // Error can not assign null

1 个答案:

答案 0 :(得分:3)

您可以通过编写nullable实用程序函数来完成此操作:

const nullable = <T>(a: T) => a as T | null;

let myVar = nullable({ a: 1, b: 2 });
myVar = null; // Valid!

这确实在变量初始化时引入了额外的函数调用,但在大多数真实场景中这可能不会对您产生太大影响。代码相当干净,所以我很喜欢这个解决方案。

另一个不那么好的方法是:

const fake = { a: 1, b: 2 };
let realVar: typeof fake | null = fake;
realVar = null;

缺点如下:

  • 对于那些不熟悉TypeScript
  • 的人来说,代码有点神秘
  • 您无缘无故地进行额外的运行时变量分配
  • 代码仍然不是那么简洁