我正在将Node.js与MongoDB和TypeScript结合使用。
以下两行代码:
const ObjectID = require("mongodb").ObjectID;
const id = new ObjectID("5b681f5b61020f2d8ad4768d");
编译没有错误。
但是当我将第二行更改为:
const id: ObjectID = new ObjectID("5b681f5b61020f2d8ad4768d");
我得到一个错误:
找不到名称“ ObjectID”
为什么ObjectID
在TypeScript中不能识别为类型?
答案 0 :(得分:6)
yarn add @types/mongodb
import {ObjectID} from 'mongodb';
这足以使用ObjectID作为类型。
答案 1 :(得分:2)
即使安装了类型,typescript也不会正确键入require("mongodb").ObjectId
。您需要将require
用作导入的一部分:
import mongodb = require("mongodb");
const ObjectID = mongodb.ObjectID;
const id: mongodb.ObjectID = new ObjectID("5b681f5b61020f2d8ad4768d");
如果要坚持使用原始版本,则必须意识到您没有导入类型,而只是导入了构造函数。有时,类型和值具有相同的名称,并一起导入,以产生相同的错觉,但实际上,类型和值存在于不同的宇宙中。您可以声明关联的类型并从模块类型中获取它:
const ObjectID = require("mongodb").ObjectID;
type ObjectID= typeof import("mongodb").ObjectID;
const id: ObjectID = new ObjectID("5b681f5b61020f2d8ad4768d");
答案 2 :(得分:0)
对于新版本,请改为:
First Script
associatedFiles Found
associatedFiles Compiled
<<$('#json').html() contents>>
html.data.length:903
html.data.length:1354
html.data.length:180