javascript - Typescript 和 sql.js - 如何告诉 Typescript 它在那里

标签 javascript sqlite typescript

我可能完全错误地处理了这个问题,所以任何建议都是值得赞赏的。我目前正在尝试深入研究 Typescript,并决定同时使用 Sql.js(SQLite 的 JS 版本)...

我使用 Sql.js 的第一直觉是搜索 Sql.js 周围的一组 .d.ts 绑定(bind),以便我可以轻松地开始将它与 TS 一起使用。到目前为止,我还没有想出任何绑定(bind)(我认为还不存在),但我想我可以开始“定义”-我需要从库中获取的内容......

从“sql.js”文档中的一个简单示例开始,您将得到如下内容:

var sql = window.SQL;
var db = new sql.Database();

转向 typescript 方面,我想让 TS 知道在包含 sql.js 库之后,窗口对象现在有一个名为 SQL 的属性,它本质上是库其余部分的 Hook 。我想我需要这样做,因为,当然,当我输入“窗口”时。 (窗口点)在我的 TS 文件中的 Visual Studio 中,所提供的 Intellisense 不知道现在卡在“窗口”上的 SQL 属性。所以...我深入研究了 Stack,并得出结论,我可以通过“声明”来解决这个问题,我基本上认为这是一种告诉 TS 足够关于我没有绑定(bind)文件的库的方法(.d.ts文件)。

但是,在这样做时,我似乎无法构建这样的声明的语法。我试过:

declare var window.SQL : any;
declare var window.SQL;
declare var SQL = window.SQL;
declare window.SQL;

当然,这些都不起作用。

所以,问题是,我怎样才能让 TS 了解 JS 库在“window”等标准对象上引入的新属性,当然,接下来的问题是,这是否是解决这个问题的正确方法?

感谢您的见解。

最佳答案

现在我们已经有了 SQL.js 的类型定义,并且从 Typescript 2.0 开始,可以轻松安装它们,您可以执行以下操作:

npm install @types/sql.js

然后,编译器将自动选取该类型文件,并且它会知道存在一个 SQL 对象。这是完整的定义: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/sql.js/sql.js.d.ts

关于javascript - Typescript 和 sql.js - 如何告诉 Typescript 它在那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25924597/

相关文章:

javascript - 如何将 IEnumerable<HtmlElement> 转换为常规 HtmlElement

javascript - 如何停止 Angular 重复的 api 调用

android - iOS/Android 与 Delphi/C# 桌面应用程序同步

ruby-on-rails - #<PG::Result:0x007fcc82900a78> 的未定义方法 `empty?'

python - 外部使用 Django 数据库模型

javascript - TypeScript - 迭代枚举时的奇怪行为

reactjs - 我应该将 useSelector 传递给 useState

javascript - 在 React JS 中将 props 从一个类组件传递到另一个类组件

javascript - 异步等待和 setTimeout 在 ReactJS 中不起作用

javascript - Fetch API 在 Chrome 中泄漏内存