我可能完全错误地处理了这个问题,所以任何建议都是值得赞赏的。我目前正在尝试深入研究 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/