后端 Java 类型映射到前端 TypeScript 类型时,对可空性(nullability)怎么处理?

21次阅读

共计 645 个字符,预计需要花费 2 分钟才能阅读完成。

Java 的类型检查是不会强制一个变量可不可以为 null 的,但是 TS 里面,如果一个变量为 null,那么当初声明时就要把它的类型定义为 SomeType | null。接着,你有一个要用这个变量的函数,那么这个函数就得写成function foo(x: SomeType | null){}。这样不感觉很麻烦么

比如有个 Java 类型

class Model{
	String name;
    Integer id;
   }

这里面 name 和 id 都是可以为空的,而且如果有个函数是

void foo(String name, Integer id){System.out.println(name);
    System.out.println(id);
}

var model = new Model()然后调用foo(model.name, model.id),是不会让 Java 编译器报错的

把这个 Model 映射到前端,ts 里面怎么处理 nameid的可空性呢?

如果 interface 这么写:

interface Model {
    name: string,
    id: number
};

那么我就没办法传递一个只有 id 没有 name 的 Model 类型的对象到后端了,因为

let model: Model = {name: "Jack"}

是会报错的,提示缺少 id 属性。

如果我定义成这样:

interface Model {
    name: string,
    id?: number
};

那么 id 的实际类型就变成了 number|undefined,那么它就没法直接传递给function foo(n: number){} 这样的函数了

正文完
 0