【发布时间】:2021-06-20 16:27:18
【问题描述】:
我正在将 Typescript 添加到现有的 Nodejs Apollo Server 项目中,并且在使用 datasource-sql 库时遇到了一些问题。
我的 sql 客户端类简化...
import { SQLDataSource } from "datasource-sql";
export default class CtlDatabase extends SQLDataSource {
...
}
并在我设置 Apollo 服务器数据源的主 index.ts 文件中引用...
import CtlDatabase from './dataSources/CtlDatabase';
...
const dataSources = (): DataSources<Context['dataSources']> => {
return {
ctlDatabase: new CtlDatabase(config),
}
};
Typescript 似乎根本没有继承 SQLDataSource,它甚至显示了与在构造函数中传递配置相关的问题;即使根据 SQLDataSource 定义,这是有效的语法。
https://github.com/cvburgess/SQLDataSource/blob/master/index.js
您可以看到 SQLDataSource 类也扩展了 DataSource 类。
这里是错误-
类型“CtlDatabase”与类型“DataSource'。
并表明它缺乏对 SQLDataSource 类的了解
预期 0 个参数,但得到 1 个。
我的 sql 客户端包中关于导入定义的错误 -
找不到模块“datasource-sql”的声明文件。 '/home/russjb/Work/codeforaustralia/CBC-Backend/node_modules/datasource-sql/index.js' 隐含了一个 'any' 类型。
我该如何解决这个问题? 我必须为那个包定义我自己的类型吗? 我该怎么做?
tsconfig.json
{
"$schema": "https://json.schemastore.org/tsconfig",
"display": "Node 14",
"compilerOptions": {
"outDir": "build/",
"lib": ["es2020"],
"module": "CommonJS",
"target": "es2020",
"allowJs": true,
"strict": true,
"noImplicitAny": false,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"skipLibCheck": true,
"resolveJsonModule": true,
"forceConsistentCasingInFileNames": true
} ,
"include": ["./src/**/*"]
}
非常感谢任何帮助! TypeScript 新手,所以它是一个学习曲线。
FWIW 我也在使用 apollo rest 数据源,没有任何问题。
【问题讨论】:
标签: javascript node.js typescript apollo apollo-server