我正在研究 javascript 库的类型定义,顺便说一句,我不知道打字稿,也没有资源来学习它。所以,就目前而言,我依赖 VS Code 及其基于内置打字稿的自动完成/提示功能。
js 库/包公开了多个入口点:主(不是 index.js)文件和许多用于挑选的单独方法。
因此,当我将具有相同名称的 d.ts 文件放入根目录时 - 一切正常(至少在 VS Code 中)
但是当我尝试将所有这些文件移动到单独的子目录并为我的主要入口点设置 package.json 的“types”属性时 - 它仅适用于这个主要功能。VSCode 找不到其他文件的其余定义。
根目录中已经有很多文件,所以我不想通过将 def 文件保留在根目录中来使这个数字翻倍。
有没有办法做到这一点?我发现的一切都是这个没有好的答案的讨论。
这是当前状态
在根目录中,
在 package.json 中有一个主模块deepdash.js
defses/deepdash.d.ts
{
"name": "deepdash",
"version": "4.5.5",
"description": "? eep standalone lib / odash extension: ? eachDeep ? filterDeep ? mapDeep ? reduceDeep ? pickDeep ? omitDeep ? keysDeep ? index ? condenseDeep ? Parents stack ? Circular check ? Leaves only …Run Code Online (Sandbox Code Playgroud) 这无需安装 lodash 作为依赖项即可工作:
const _ = require('lodash');
_.each([1,2,3],console.log);
Run Code Online (Sandbox Code Playgroud)
(不,我没有全局安装 lodash)
我在某个地方看到像nodejs默认支持lodash,但现在我找不到任何关于此的文档。最终是真的吗?我在哪里可以读到相关内容?
PS 最后,我在主目录中找到并删除了 node_modules,所有的魔力都消失了,现在这个脚本会因缺少依赖项而产生错误。感谢你们在这次调查中提供的帮助。
我为我的模型做 updateOne 并且在我的方案上有 pre updateOne 钩子,如下所示:
const schema = new mongoose.Schema({ name: { type: String } });
schema.pre('updateOne', async function() {
fs.writeFileSync('./query.json', stringify(this, null, 2), 'utf-8');
});
const Model = mongoose.model('Model', schema);
let res = await Model.create({
name: "I'll be updated soon",
});
console.log(res.name, res._id);
await Model.updateOne(
({ _id: res._id }, { $set: { name: 'I was updated!' } }),
);
Run Code Online (Sandbox Code Playgroud)
但我找不到任何方法来获取当前更新的文档 ID 这是一个有效的测试脚本:https : //gist.github.com/YuriGor/04192230fb63542c1af5ff5c19b3a724
注意:在现实生活中这会发生在 mongoose 插件中,所以我不能像在这个脚本中那样将 doc _id 保存到父作用域中的某个变量。