Що стосується самої помилки, let
вона використовується для оголошення локальних змінних, які існують у сферах блоків замість областей функцій. Це також суворіше, ніж var
, тому ви не можете робити такі речі:
if (condition) {
let a = 1;
...
let a = 2;
}
Також зауважте, що case
речення всередині switch
блоків не створюють власних областей дії блоків, тому ви не можете повторно оголосити одну і ту ж локальну змінну в декількох case
s, не використовуючи {}
для створення блоків кожен.
Що стосується імпорту, ви, ймовірно, отримуєте цю помилку, оскільки TypeScript не розпізнає ваші файли як фактичні модулі, і, здавалося б, визначення рівня моделі в кінцевому підсумку є загальними визначеннями для нього.
Спробуйте імпортувати зовнішній модуль стандартним способом ES6 , який не містить явного призначення, і повинен змусити TypeScript правильно розпізнавати ваші файли як модулі:
import * as co from "./co"
Це все одно призведе до помилки компіляції, якщо у вас вже є щось із іменем co
, як очікувалося. Наприклад, це буде помилкою:
import * as co from "./co";
let co = 1;
Якщо ви отримуєте повідомлення про помилку "не вдається знайти модуль co" ...
TypeScript виконує повну перевірку типу для модулів, тому якщо у вас немає визначень TS для модуля, який ви намагаєтеся імпортувати (наприклад, оскільки це модуль JS без файлів визначень), ви можете оголосити свій модуль у .d.ts
файлі визначення, який не не містить експорту на рівні модуля:
declare module "co" {
declare var co: any;
export = co;
}