Когда выполняется неэкспортный код верхнего уровня TypeScript? - PullRequest
1 голос
/ 26 марта 2020

В настоящее время я не совсем понимаю, когда код в файле выполняется, а когда нет. Если у меня есть файл file1.ts, подобный следующему:

export interface myInterface {}
export function myFunction() {}
export const myConst: {}

// ... and more exports

// top-level non-exported code
if (condition) {
    myConst = ...
}

И file2.ts, содержащий один из следующих элементов:

import { myInterface } from "./file1.ts"
import * from "./file1.ts"
import * as file1 from "./file1.ts"
import "./file1.ts"

Как отличается ли поведение? Когда выполняется код верхнего уровня , который не был экспортирован в file1.ts, и когда он не выполняется? Выполняется ли он, даже когда импортируется только указанный c экспорт (см. Первый вариант)?

Это меня сейчас сводит с ума, и я ничего не нашел об этом на странице справочника TypeScript для модулей .

1 Ответ

1 голос
/ 26 марта 2020

Множество условий определяют, будет ли модуль TypeScript включен в окончательные, переданные JavaScript файлы или нет:

  1. Вид использования импортированных переменных в вашем собственном коде.
  2. Тип импортируемых переменных (class, interface, et c).
  3. Поскольку настройки компилятора TypeScript 2.8 importsNotUsedAsValues для управления поведением.
  4. Начиная с TypeScript 2.8 также существует новый синтаксис import type и export type для модулей, которые явно исключены из окончательных, скомпилированных JavaScript файлов.

Дополнительные сведения см. в следующем разделе заметок о выпуске TypeScript 2.8: Тип -Только импорт и экспорт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...