【发布时间】:2018-08-04 11:13:04
【问题描述】:
我正在尝试让 monaco-editor (v0.13.1) 检查 JavaScript 中的函数签名。通过使用下面的代码,我至少可以让 IntelliSense 显示预期的签名,但没有显示错误:
// validation settings
monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({
noSemanticValidation: false,
noSyntaxValidation: false,
});
monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({
noSemanticValidation: false,
noSyntaxValidation: false,
});
// compiler options
monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
target: monaco.languages.typescript.ScriptTarget.ES6,
allowNonTsExtensions: true,
allowJS: true,
});
var jsCode = `
/**
* @param {string} a
* @param {number} [b]
*/
function foo(a, b) {
}
foo(1); // here should be an error!
`
monaco.editor.create(document.getElementById("container"), {
value: jsCode,
language: "javascript"
});
我错过了什么?
【问题讨论】:
-
见 stackoverflow.com/questions/31195952/…>。似乎不可能使用动态类型的语言——比如 Javascript。在 C++ 和其他静态类型语言中,这当然是正常的做法。
-
您的回答与摩纳哥编辑无关。该编辑器在内部由 TypeScript 提供支持,因此可以做到这一点。在 VSCode 中,它适用于 javascript,在打字稿模式下,它适用于浏览器。只是在我使用 javascript 模式时不在浏览器中。
-
@DGriesel,这对于 JS 代码是完全正确的!你不在 TypeScript 模式!请学习 JS 语言。
-
@Bharata:学习一门语言与想要使用现有的编辑器功能有什么关系?如果您没有什么建设性的补充,请不要...由于我在此期间找到了答案,所以我将其发布在下面。
-
@DGriesel,你可以看到:你在 8 月 7 日得到了答案,没有我的评论就不会在这里发布。而且这个答案是不正确的,因为检查不仅会针对 JavaScript 中的函数签名进行 - 这将针对具有 TypeScript 规则的整个 JavaScript 代码进行。这是完全错误的!
标签: monaco-editor