在打字稿中使用 mysql 类型

Posted

技术标签:

【中文标题】在打字稿中使用 mysql 类型【英文标题】:Using mysql types in typescript 【发布时间】:2018-01-31 11:11:37 【问题描述】:

我有一个需要使用 mysqljs (https://www.npmjs.com/package/mysql) 的 nodejs typescript 项目,我已经导入了definitelyTyped 包 (https://www.npmjs.com/package/@types/mysql) 并将它们包含在我的 tsconfig 文件中

tsconfig.json

“编译器选项”: “noImplicitAny”:假, “模块”:“commonjs”, “noEmitOnError”:是的, “删除评论”:假, “源地图”:是的, “目标”:“es6” , “排除”: [ “节点模块” ], “类型根”:[ "node_modules/@types", “脚本/打字/节点” ], “类型”:[ "mysql", “节点” ]

我可以正确使用 mysql 模块功能,但我无法访问类型(IConnection、IQuery 等)。 我还可以从智能感知中看到参数和返回类型。

例子

import * as mysql from 'mysql'
...
getUser(username: string): User 
        mysql.createConnection( host: "...", user: "...", password: "..." );
    

但我想创建一个返回在 mysql 类型中定义的类型的方法(例如 IQuery)

类似

getUser(username:string): IQuery

作为一个 c# 背景的打字稿初学者,我不明白这里发生了什么。

感谢您的帮助。

编辑: 我试过在他输入前加上前缀但没有成功,也试过通过这种格式导入import IConnection from 'mysql' 再次感谢。

【问题讨论】:

【参考方案1】:

似乎 ReSharper 是我的问题,但我仍然没有找到如何忽略错误或修复它们。 我重新安装了 Visual Studio 2017,它在没有 Resharper 的情况下工作,但是当我安装它时,我又开始遇到问题了。 谢谢您的帮助! 如果我能找到解决方案,我会对此进行编辑。

【讨论】:

【参考方案2】:

你可以通过在接口前加上mysql来访问它:

getUser(username:string): mysql.IQuery 


【讨论】:

我试过了,但它仍然没有显示或编译,也许它是我的 IDE? 你真的安装了这些类型吗? npm install @types/mysql --save-dev 是的,我可以在我的 IDE 中看到这些类型,但我似乎无法从模块外部访问它们。我也试过你的命令,但没有成功。 我可以使用与您完全相同的tsconfig 的界面。你能发布一些可复制的东西吗? ReSharper 似乎是我的问题,仍然没有找到解决方法,但它超出了主题。

以上是关于在打字稿中使用 mysql 类型的主要内容,如果未能解决你的问题,请参考以下文章

过滤掉打字稿中接口的不需要的对象属性

打字稿中的重载函数类型

如何在打字稿中正确导入自定义类型

打字稿中的通用对象类型

扩展打字稿中的快速请求类型

反应导航:如何在打字稿中使用 NavigationStackScreenComponent 类型传递 redux 道具