#javascript #visual-studio-code #mocha.js
#javascript #visual-studio-code #mocha.js
Вопрос:
Автоматическое предложение не работает ни для одной переменной, объявленной в блоке beforeEach. Если я использую переменную «app» в блоке it(), автоматическое предложение не показывает ни один из методов. Автоматическое предложение работает в блоке beforeEach. При нажатии Ctrl Пробел отображаются все доступные методы. Я использую Visual studio code в качестве IDE. Mocha — это платформа тестирования.
var express = require('express')
describe("#1", async () => {
let app
beforeEach("SetUp", async () => {
app = express();
app. // First, Auto suggest is working on pressing Ctrl Space
})
it("Demo Test #1.1", async () =>{
app. //Second, Auto suggest not working on pressing Ctrl Space
})
})
Ответ №1:
Редактировать: Если вы не хотите идти ва-банк с TypeScript, вы можете сделать это с помощью JSDoc, если вы не возражаете против добавления @type
аннотаций, где объявлены непереводимые переменные.
const express = require("express")
describe("#1", async () => {
/** @type {express.Express} */
let app
beforeEach("SetUp", () => { app = express() })
it("Demo Test #1.1", async () => {
app // autocomplete is now available here
})
})
Оригинальный ответ ниже
VS Code не может вывести информацию о типе переменной, установленной в обратном вызове.
Рассмотрим следующий упрощенный пример:
let variable
foo(() => {
variable = 1
})
bar(() => {
variable = 'str'
})
main(() =>{
// what type is `variable` here?
})
Если вы хотите переключиться на TypeScript, это можно решить, добавив аннотацию к объявлению:
let app: Express
ДЕМОНСТРАЦИЯ
const nonDeterministicTimeout = () =>
cb => setTimeout(cb, Math.random() * 100)
for (let i = 0; i < 10; i) {
const foo = nonDeterministicTimeout()
const bar = nonDeterministicTimeout()
const main = nonDeterministicTimeout()
let variable
foo(() => {
variable = 1
})
bar(() => {
variable = 'str'
})
main(() =>{
console.log(typeof variable)
// fluctuates arbitrarily between
// undefined, string, and number
})
}
Комментарии:
1. Есть ли какой-либо другой способ заставить это работать, а не использовать typescript.
2. Вы можете попробовать с JSDoc . Ответ отредактирован с информацией.
3. Спасибо Лайонелу Роу. Это работает. Действительно ценю вашу помощь.