我用Typescript 用demo-todo-with-react.对于api.js创建api.tsx,在api.sdk={数据库,帐户}"类型‘{数据库:数据库;帐户:帐户;}’不可分配给类型‘NULL’时出现错误"

let api = {
  sdk: null,

  provider: () => {
    if (api.sdk) {
      return api.sdk;
    }
    let appwrite = new Appwrite();
    appwrite.setEndpoint(Server.endpoint).setProject(Server.project);
    const account = new Account(appwrite);
    const database = new Databases(appwrite);

    api.sdk = { database, account };
    return api.sdk;
  }
}

提前谢谢你

推荐答案

api对象添加自定义类型. 在你的情况下,应该是这样的.

interface AnyApi {
 sdk: null | any;
 provider: () => any;
}


let api: AnyApi = {
...
}

这会奏效的.

如果你想走得更远,添加一个这样的模板.

interface AnyApi<T> {
 sdk: null | T;
 provider: () => T;
}

interface AppWriteSdk {
 database: Database;
 account: Account;
}

let api: AnyApi<AppWriteSdk>= {
...
}

Typescript相关问答推荐

在TypScript手册中可以视为接口类型是什么意思?

无法从应用程序内的库导入组件NX Expo React Native

如果一个变量不是never类型,我如何创建编译器错误?

从typescript中的对象数组中获取对象的值作为类型'

TypeScrip界面属性依赖于以前的属性-针对多种可能情况的简明解决方案

分解对象时出现打字错误

TS如何不立即将表达式转换为完全不可变?

限制返回联合的TS函数的返回类型

对于始终仅在不是对象属性时才抛出的函数,返回Never

从对象类型描述生成类型

按函数名的类型安全类型脚本方法包装帮助器

TypeScrip:从对象中提取和处理特定类型的键

为什么我在这个重载函数中需要`as any`?

在类型脚本中将泛型字符串数组转换为字符串字母并集

ANGLE NumberValueAccessor表单控件值更改订阅两次

自动通用回调

在类型脚本中创建显式不安全的私有类成员访问函数

基于闭包类型缩小泛型类型脚本函数的范围

如何使用useSearchParams保持状态

如何键入';v型';