这个错误通常是由于尝试将一个可能是 undefined 的值赋值给某个类型时引起的。解决方法是要么明确地将类型设置为可选的,要么在代码中添加 null 或 undefined 的检查。以下是一个示例:
假设有一个 MyTypeName 接口的定义:
interface MyTypeName { name: string; age: number; }
现在我们要从服务器获取一个对象,该对象可能不存在,因此可能是 undefined。我们试图将这个对象赋值给一个 MyTypeName 类型的变量:
let myObject: MyTypeName;
// 从服务器获取可能为空的对象 const response = someService.getObject();
// 尝试将 response 分配给 myObject myObject = response;
当我们尝试编译这段代码时,就会收到这个 TS2322 错误。
要解决这个问题,我们需要在接口定义中将类型设置为可选的:
interface MyTypeName { name?: string; age?: number; }
或者我们也可以添加一个检查来确保 response 不为空:
let myObject: MyTypeName;
// 从服务器获取可能为空的对象 const response = someService.getObject();
if (response) { // 只有 response 不为空时才将其分配给 myObject myObject = response; }
这两种方法都可以解决这个问题。