首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在打字稿中正确、全面导入BetterSqlite3 3的数据库类?

如何在打字稿中正确、全面导入BetterSqlite3 3的数据库类?
EN

Stack Overflow用户
提问于 2021-04-03 11:09:30
回答 2查看 1.5K关注 0票数 1

我有一些使用更好的sqlite3 3的代码,我正在尝试将它移植到类型记录中。

原始javascript代码的相关部分如下所示:

代码语言:javascript
复制
import Database from "better-sqlite3";

/**
 * @param {string} filename
 * @return {Database}
 */
function openDb(filename)
{
    let db;
    db = new Database(/* some arguments */);
    // some initialization
    return db;
}

将代码放入.ts文件并添加类型后,如下所示:

代码语言:javascript
复制
import Database from "better-sqlite3";

function openDb(filename: string) : Database
{
    let db : Database;
    db = new Database(/* some arguments */);
    // some initialization
    return db;
}

我得到了代码中使用Database符号作为类型的所有位置的错误Database

如果我使用类型编码3.8的import type,那么错误将被逆转:我可以使用符号作为类型,但不能用作构造函数。

是否有任何方法来导入此符号,以便将其作为构造函数和类型进行类型记录?有什么魔力可以让我用代码来表达自然的思想流吗,“我调用new Something()来构造Something,然后返回said Something",而不是复杂的思想流”我调用new Something()来构造SomethingUnderADifferentName,然后返回said SomethingUnderADifferentName“吗?

EN

回答 2

Stack Overflow用户

发布于 2021-08-16 09:26:55

这应该与esModuleInterop编译器选项结合使用:

代码语言:javascript
复制
// index.ts

import DatabaseConstructor, {Database} from "better-sqlite3";

function openDb(filename: string): Database {
    let db: Database = new DatabaseConstructor('/tmp/sqlite.db');
    // Some initialization
    return db;
}

这样处理时不会返回错误:

代码语言:javascript
复制
$ tsc --strict --esModuleInterop index.ts
票数 4
EN

Stack Overflow用户

发布于 2021-06-02 12:30:52

试试这个:

代码语言:javascript
复制
import Database, {Database as DbType} from 'better-sqlite3';
function openDb(filename: string) : DbType
{
    let db : Database;
    db = new Database(/* some arguments */);
    // some initialization
    return db;
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66930477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档