模块

JavaScript 在处理模块化代码的不同方法方面有着悠久的历史。 TypeScript 自 2012 年问世以来,已经实现了对许多这些格式的支持,但随着时间的推移,社区和 JavaScript 规范已经融合到一种称为 ES 模块(或 ES6 模块)的格式上。您可能知道它是 import/export 语法。

ES Modules 于 2015 年被添加到 JavaScript 规范中,到 2020 年在大多数 Web 浏览器和 JavaScript 运行时得到广泛支持。

作为重点,该手册将涵盖 ES 模块及其流行的前驱 CommonJS module.exports = 语法,您可以在 模块 下的参考部分中找到有关其他模块模式的信息。

JavaScript 模块是如何定义的

在 TypeScript 中,就像在 ECMAScript 2015 中一样,任何包含顶级 importexport 的文件都被视为一个模块。

相反,没有任何顶级导入或导出声明的文件被视为其内容在全局作用域内可用的脚本(因此也可用于模块)。

/KPtktYjXS40Eyr7imJJj6qbzjlWa89B+VeBGfrO4dVib9Ph8VSMnXbk6/PwYZ5hxxvoH9/mh8D71i/UfTgODIgcx5syqDs1XzFaYanRz+sIuD+CM3wITj3GFLgbDG+jB12zOb8CXkr9yetklKq7EcmGT144CBJAo+RQCPck7YIEvI5/OUynWh+TRGm7nHGv/36/bOMa5Q4ecsvaVrsEalF6BAk7IY+6U3mpevNL4/SwsrcnyNmE80SPh5kW52+bpi6AqjvgBOM8SGm+vZ96ukGeGu8/yl3Luu4Q03plyqrcFhFKfpWKE9Txi2/0JvgzurPKpt+9EEYEUJcMDwDKkrBFgoNh9lpSgkYT0qwsvUPVRtsYt+0N8ubRO/tpG80RxZHf7MaAFKsmQ1T2k7IOqIATJg8BG57rlZ6JqDSm0PteIUrWpxRYz8Xw9D74uVaFT6unDDSiDDdhmX0rjTDA5g==

非模块

nGHFaXzv4jM1JynbZqMSRw6+Q7RMtEIZvn7grB1oJG37xoXjqzy1XWW5IEEeJNchMDEBLP7XpuA1ncJRZtyOxidCrGe5OTO9dcwvAF3bw2txZx1Tc/nRXznniuMLKJ6AtrdtkYj+z1yl4o1j9KL/32QcfpSjfWqOlyvvxvv6+lb5jm2cgA+e6JxSmJ/d3lRGeCZ89eVG5lIXwmd0pyi1PbKLNn6WbrmuhQwxPAhncF9bJ13eCQFRYSuEWNRWfmqKE6gVIw1ut+moffDcGYQ5UFqoIEKLummKsn4m8rKWMaM=

/HXLtlrVWCwTRs1kOycUrRh72gXeHn7+w48HJVPi2F/9GLH7S2D/RN8HQCzL3kLH0lHRPg63mAgaoY6A5oSHtXW9jiP9+SnVqcuDP35alFz+oJlnSWjfn/aUAZvBr1kK1sMyfnm3qqshyc3PVM1sB6zMiyUI8UNXw8FDb5p8IF+qRb+j0pfJ4zHZZr2CyJ4fkPkWXY2LiqwVXfZWLsAKthdwCWNtjJn2w5qNedD8B1A1n/kDxVCD2LmuUW6sNgf2TfciDxdFZx7hBFPMlvczXbg+CfGVUq7QB3Zj7JQOT7No4QkHD74xJqwYOCOQRt2KFbXEow5KJ05Zjk1QnPz3+pBLevUUA6lGFoSlF8jDNyPfSclUtFdZWcgU28RBBWcX7W/efKEmI6aZoLMFZ/ZcFyRzYaoGs1ydIEo4bwTt/D7XBuPxd5qSSTbvta9RlH6iQ6mZVxfbbrsXQ0ab7W2pZpCA3Agb0pezoENi3BpWgfY=

LR3l0I/jt6R+ngzvip63AUKojPMYi6hb0XQEAMMzvPnJ0c//wrFYp3TLnYNqeVvezDC5nKTUifeA1L7EmVSdNq9fvrSSTeCRXDOCaqDJIbyaUZUysjRuvpsVjIpuM5ujkL0jSovoREs5D/uKHKV8V/4ZtrRLVZ2zHWYv1lRiKcJJV1/toMBSttlKGLoFTuKL64Hxkj5S4RZv07nM7OcYhQ==

export {};

aZg7oJcAMxSyWMIaeCNpLJfdOA08lEgSwIZ/VtxbW1DvjUOq/qJGuwWp0Hx8O7mZ9l3FYG+tLMuMMsM2tEZCjxwMSm4qBDbf47xizYuM/SEV6PSsKg7nUlSR73c5XwSSalOb+88UAlpee7gZqsKswg==

TypeScript 中的模块

8NxR/RLrC9Xl9w2F8O3x9jWf806a2XX09sZ/ee46oBg3Zvw+62kdO0oC/d7bEqRN8l5GlaLpSRjPCiqFXKiVGstX6Zwm9kP60RWBrBblSpE=

    e7mjKzBH5dfaeczH03Tb7k4XBNQHRMcu8vgMkiEWZzX5ty0VLR0IgzRFkYanzlZDDC4UseSD1WBmJw1lj3I6uxuUd7+P88/1z6zThJeW9w1A2WWw0IC9PSXvvnIk6bULCA4zXugiPjJ2olps3br0jItOTWb4b+uDgqSYytkm0duxyeorhh1uV5S03GRUg/4L1ZzgERCXz5l2m8nTcqlPJ+jOQ3d3jDCT5l9428AhNiZydmcBRrpwGo+BC+VMXdcpz9vsfTa0ZH1Z/otavFFWA7fjTfzs6aR73H5FHXD/Vg6/oXqXdSBuAGAQWzZL6FD/25ZGV9SCNfw0Sh5QjWklusyxsPKny5D9IMi1f0h6ZyDxeAPxyhT0n52CXB6iPFECd87Vkin42UXi1zEFCXl86g==

ES 模块语法

MsLHSmnBqOQia4adn28q0Dd4zK5irrfUQaz1VGDfE3lFu5EZlpD+8oQ9GGY3KnkOn2hFxy36xp+EbHZ7EviN9v99ShTq3tuQdiQuWmPMnkg=

// @filename: hello.ts
export default function helloWorld() {
  console.log("Hello, world!");
}

XwGgMzOXsEvRPn3TW73kWezSLfu/s1kx0mw7qhlcuEBSgFAyXIdllhJ3C9f75heJ

// @filename: hello.ts
export default function helloWorld() {
  console.log("Hello, world!");
}
// @filename: index.ts

import helloWorld from "./hello.js";
helloWorld();

FWLvvUduvDKM9dIlefqhhRS6iesx9ajxiEg3KCD/E8f9mvplWuIzGZLDbiWsgJwkA/3ApxEVbDpVvCnMD3fVJlZvOc4FaJYKBJ0aRe2gc5IDgAbh4qpIO7qEo6f80Mpv9/BQrqEz0nK2wNnNbvPg7rcve+pBExQFMv0yVkPNTYyHj7aOZZgkkqdQkIvbR5Hf

// @filename: maths.ts
export var pi = 3.14;
export let squareTwo = 1.41;
export const phi = 1.61;

export class RandomNumberGenerator {}

export function absolute(num: number) {
  if (num < 0) return num * -1;
  return num;
}

tOVZWICltawrGnrIVLhB+/D7HJduq4VZzM2AaMOG7F1FD7r0ew874gH5D7eddMx0ZAFvhYBuJAqf7HG0fvWDgm3ok1lksOKPcZkRV8GcBMc=

// @filename: maths.ts
export var pi = 3.14;
export let squareTwo = 1.41;
export const phi = 1.61;
export class RandomNumberGenerator {}
export function absolute(num: number) {
  if (num < 0) return num * -1;
  return num;
}
// @filename: app.ts

import { pi, phi, absolute } from "./maths.js";

console.log(pi);
const absPhi = absolute(phi);
//    ^?

附加导入语法

EGtaL5MA4nCg8FOI7TNsJ9stdKa8A3mLZwT5AFwXTxzBRhZI3x9k/ii/0L4dQoGXYFWNOS2h8j4fxOvHYmKLx3hlcZf5gcm8yhN4X+/UGXA=

// @filename: maths.ts
export var pi = 3.14;
// @filename: app.ts

import { pi as π } from "./maths.js";

console.log(π);
//          ^?

xsXWafyHs3W0fxMy6DGgRA4/PeFxlR+9ZP0QMX20lI+RMb3CyprBn8v2Z8MsxWFGf7u4brrMgayVtQ6NqU4z53H10AFqGV6nKGXZJIoIByY=

// @filename: maths.ts
export const pi = 3.14;
export default class RandomNumberGenerator {}

// @filename: app.ts
import RandomNumberGenerator, { pi as π } from "./maths.js";

RandomNumberGenerator;
// ^?

console.log(π);
//          ^?

uS+xbX2WSsPay93a8+3vWqqNFKlw4k5PQzQbU5Ns/GaopII20ljBwi3XKSYyIpQXNXPmgv9AcS+vJpKysEceqeAsQsNC7XQIQh8slcF3m5y+f423c0RhWOLLMBF/Ezpd

// @filename: maths.ts
export var pi = 3.14;
export let squareTwo = 1.41;
export const phi = 1.61;

export function absolute(num: number) {
  if (num < 0) return num * -1;
  return num;
}

// @filename: app.ts
import * as math from "./maths.js";

console.log(math.pi);
const positivePhi = math.absolute(math.phi);
//    ^?

Ng1QCa4+U/CxB22ejKlc7FD7AdJLggbtr3+GwYv//4TQRpmm1eOeJuDDurjSk7T5qfCcyO75ZYY6LRRN4kOcI6PSrKBkXshKM2hqS9ulqPIuAK141HgQ3FPsFriLfZ3d5I7GOWPdCcy428Fo3Au/0w==

// @filename: maths.ts
export var pi = 3.14;

// @filename: app.ts
import "./maths.js";

console.log("3.14");

FIHnXqbZ3N6b9am60cs+C3OsOhknm1W9QTwfwLhA0toCtyHlSKxKECuFkzJjTF82u8TT9Zi/h6/bRhM06vg2ctCaz3QfqA6Pif94UfNWlg77K4S0t9dilxBDEgbZ9qgIkTlsDEJ1oHMKJVuETHEibRDzWAbJf4y38PeyoYCGC5ZXkMUr4PDoc/cgx9gYB2lp2Ha/Zzlvc4+jTJdfNv2dGiljz1vJEM3+Yep+klC5ZH0=

TypeScript 特定的 ES 模块语法

/CdZ/FqVTqzFVDUKyA+h0+hdkLwhbEYYQd4v12rIZ+wdFYCdYVZqllDVXoIVaQHys9zx+d7JzlGB/hoqggxe5DvfFWQu3lO2UPQtKU6W9MM=

// @filename: animal.ts
export type Cat = { breed: string; yearOfBirth: number };

export interface Dog {
  breeds: string[];
  yearOfBirth: number;
}

// @filename: app.ts
import { Cat, Dog } from "./animal.js";
type Animals = Cat | Dog;

zvKL4dxCIvOikGxZKsllR3LMOfNKLwYOYiAddVRQJoQVqeCjUkDe0tO3gVyvG9iJj6/yVi24t5vDNa1nYGFKwp2LWlN6EMAXQByArqUkL2T67GBDvvA6Vt57BGQC30nnHcG8fyNRgzD4RenkMePyDw==

import type

vtvge9QYDZ7TOKASDmYJ3Td3QFx9elnk3eJ/cFpn+VqlVptJ5KJcxhClOkr/8GzoNLoyoeUREhhs++eYQ2v1Yg==

// @filename: animal.ts
export type Cat = { breed: string; yearOfBirth: number };
export type Dog = { breeds: string[]; yearOfBirth: number };
export const createCatName = () => "fluffy";

// @filename: valid.ts
import type { Cat, Dog } from "./animal.js";
export type Animals = Cat | Dog;

// @filename: app.ts
import type { createCatName } from "./animal.js";
const name = createCatName();
内联 type 导入

Cgv1OEaCxDy2ONwcthIadBTHkE5Y43xAA6eb+W+E1CsH7f5ySc7PadbwpfbBoRBI8XorDGi0TipmSUuZV4PAevdeFXaQNjcszPIf34ysf40uE0wRTRgixQY48T3oGu9z3nfojHvEaZHKG+7QQJDSJb2djKGArfLZXSkLCjRDx3o=

// @filename: animal.ts
export type Cat = { breed: string; yearOfBirth: number };
export type Dog = { breeds: string[]; yearOfBirth: number };
export const createCatName = () => "fluffy";

// @filename: app.ts
import { createCatName, type Cat, type Dog } from "./animal.js";

export type Animals = Cat | Dog;
const name = createCatName();

wk3YgvndKh65brVHcaVCmQgXRNUkeaHhrow/MM2Qc+zV69NFgXVvSsm/0jT8THYQp95xdITZ71aJ3NucyRI/Zu+/3HOh5I4p/or1lYR1/iIospABVbi+EKou4qaM2gq+AgAIaoyti/x0GfOIRSCENAc0I3/JQvtIxZ32/Drj2V0=

具有 CommonJS 行为的 ES 模块语法

OxAuoIpAfoYzoz5G8LVQnSYk4AlKdKGSVG4iT8s8Vk4oGP09bLm8VnWCR001PsE64aUsgK0z70Ypk+vbU48ndTPYGIp8KPqVwOwufAgv+jBdgs6KtgGlOiin8c85FCqfX0lN8IIAG5QfN6ppcTzjTz9yQxwp6Au4fUNh6fLtraAtDvulisfTX1uVNw/OueAzACnpMVkGaIVUlbamQ/bxBPQVH9jqE+ekxZY3DO1kwN68orM/yXg1FgUlUnlO76xlJLFSmfzPVrR2mscaeRNalCzb1TcB/zyDHLoeXeYn7ZFbzoGGJFfWsifCO7/8sLbl08PD21aFgVDz2bNNmP7xbb3srUhHB7pcTgmF7cKPhK6IMSoZFqEy5acQbBvcyFMC

/// <reference types="node" />

import fs = require("fs");
const code = fs.readFileSync("hello.ts", "utf8");

yGUKk0TfbWtSbiAu+ai9aDWYa4dej8wFTQWjZXSX0DW2R6TlI6dCoMOsN4nvnAPr9RpPYg3bxJOj48lCCGL5lubQSvGp9Nd8imvOv1WpyNY+waVceOhY9SAxz6tijdYyP7EObyQ4gOLoA1EC3afZ+/JNkLNPpuYo5Erhl95EHNM=

CommonJS 语法

UAafaYarKE0PQYl3JX3l4WlTY0zl5zQBF4mLQeVoj/j1noBqFc2IYgFk/XoUapxNnF631GpEIul229emvTWQwLGB7sJ42efpp7iv5eulN+KWmNLpMUO3S9ftXwEhnimFOoMJ005Vhy4NwPYDerm8Qiq9YDCKO99OlF45YSfAvnF11YC6uvcXhdPqHXEeHhzMSWvxry+zCnLkMhbLSjqdk3EcgJm2vucg1/j/ceFeUMaEyQHIh03pVoIWOP0NPUpBKJnubGlRa79NNnbUa+OOcGFy1yYQFoYt2xbvuUoATiI=

导出

gihtQSXlvjX9Nn+AwL0LTyGKeFpLwVeL6qV9HTBrhKqLouGLRBHnaaniXjFmo6grzQRXPyk1tOnR7rrUy8dNKVCurhsxbAgaJwcxPScTICHMNs7ywyAE7NO7YzqURbXx0lDF+H9TORsef13fPEw34A==

/// <reference types="node" />

function absolute(num: number) {
  if (num < 0) return num * -1;
  return num;
}

module.exports = {
  pi: 3.14,
  squareTwo: 1.41,
  phi: 1.61,
  absolute,
};

U131VJLZDOt/qlS9H4/iQ9X6veQYxtkQ6id4UoY71CQGuG9KISxb3Rga/IXeLtWW25QVXLl3KtgMEvtMPkBmlQo42H5GtC0syR1xljXHL4Q=

// @filename: maths.ts
/// <reference types="node" />
function absolute(num: number) {
  if (num < 0) return num * -1;
  return num;
}

module.exports = {
  pi: 3.14,
  squareTwo: 1.41,
  phi: 1.61,
  absolute,
};
// @filename: index.ts

const maths = require("maths");
maths.pi;
//    ^?

NtxuL/b2hag/TC7fk4Oikv54yCB75vfPf7E3mXaPFMVPQU0G27eJ3FKVOitgA8iclJJec/jx9EK5LxyYzxf7HlZ7W4xvSgYsEK1tTjp0kh8=

// @filename: maths.ts
/// <reference types="node" />
function absolute(num: number) {
  if (num < 0) return num * -1;
  return num;
}

module.exports = {
  pi: 3.14,
  squareTwo: 1.41,
  phi: 1.61,
  absolute,
};
// @filename: index.ts

const { squareTwo } = require("maths");
squareTwo;
// ^?

CommonJS 和 ES 模块互操作

y16gZKWv3LuEZtmqumeF/y33RC4Snw4gqArb9wyJ589TyMsmu9/ovxPZSOe1zYh/ynXtY6DfwtPJVMyKvBzl/KLkPQskU0u2txzR2wNxFQSCKTDSFseUzoypwKuOCumTPB4mCpz8qNitAYqAfBDIX8as86rWIeA5Qmu1ROEENuHzkgaaxayWwDZ0zX/MEzKGqJhVU1FIZsoNEtQP4g+IfQd5hI45ID2yL+LPqDu5sPqNO+ouYojXFlFbRO+qj+uxvtwRj3BFaR1AOL5M/elXVq/hWMBwO3SNYHBTpyGNuCy+6CO4HxkDBsEvmkvK94NlF8ksQdGdy8AAoZgbqfi8bDb5GyTXWiYEsKvdnigl8V7Mgn/UCx+IcAaSvQj85xts

TypeScript 的模块解析选项

p+i7w4hNYu+XnAJCBcZLxgCqjhZtn++OfBSo7N82m4dFzwUQQukdWSs1arNxF/HxKcdhrMayC1ajo7NYIdmq49PKz53c6e/IC2cc8Q97wqe8ibu7OpmpXSGxNnFXs/J3N+ixSB0eL2INRt95rVY+zX7NSMuxltU7EXbFA/b47Hv69yvO9/mnRgItvEp3LB2S

u511yzeoDFKiq1OvcbzpUgkmoM1eBGjt3Ix/bVr/MOmAcZpXDV5BSmdSf4GdzAYEqfi1JkJlvV2IuM3p2EKLrimjyOqqpvdDk9jGXBwDjgXAWteqabznCpIg40NGZ+O1RUnPg0KSAB/ksZMyGFArZO9BNOEHOPw5P2+gTnH2tvkQr03gjpXz9uj8XDUrRmrudY7W33J/a0gMBiQSQgCFTLLrTUVB6etT4Ia12WMZE3F5F75M4OgRUygZYhpBuA7uR/w6F5kgXzqMGQgGqDJoV9XdM7Ii2rsEp8lcMYfJLeV0yGPTQEtvX1bAVhfX/ifAVfLFCihDpIzf16f3d3G0Odm537rbcc20rjediV6tuM9dQm8Lb9mJjXCG55LLXjxm/QebSkhMMuU6Cxq+wPUiSVzanEAjUm6yImuw+NQdj1ilHfFf9Km2AGuRcT4Qi7dYc6qjib5PHoodmeF/OsNsT9wagEccNXibwFjLGwBbwVdACDRatQyYfuC07wEtTXyz

UGW++nRhLMggZEhxCPMO8E1GsDr+tIVdiDfZN0O7WyD8cAM0Xb37/qAB82uutBnMEO/+CxrP8yW96DSfGXUqsMShHliVRBBRPikuFQct7/07gbSE+3ZxTIJAZ371fkmhe78nlGuQPNwEg6AmQybj3ywlX5f51BnMoiipJpeeBQpme2MWnjxU6t7x8iBxouh1G5ytIp1HaBxem2UMkmbdIWwTkx4IKLnbBEz6MdiYFFNaJIt8V9Y7RxrWv5Di41mxl9CrTKE4wxgVQBxzVW6IHeTZvlajy61bSQpmbuQVgfF9jMA958XrhvIWJr6hnJ9XpCuGtzGye2cdwvytKsR+5aUiPe4PZq76cN7gKvfHV3AqWjUBFJYcKCB5q6+9HAwCTnYzn+6iyq/kuXhdu6kxP9Uy64iBBgyqf7NGu8cc3LEuP31USZJBETR/Km6l+3ihb3v2dyNDRRf2Ujtyl4+r8rG/nuaSifNZ7yZAmWi/kCo=

CIzLXy7UEAuR4Jq1fidcmqIOlwLi813FiP0ULhDPQ+euJsdRHy1NCi4bPqaFYZQsuiF4NX2ZKs8mQOk4nqincEKAmxVBcGk3sD/jfe3OeiwOt6lEp7JqSJ9SVYf7zItDOdfG+WnrBLY5+SoWq/pb6BW0t7S5aJ1582q/EQDhNC8AmS/z1m0MkHkNg2wtcUGt

TypeScript 的模块输出选项

yAcdVV/XkpjSWaV4I7mS2XCvn2trIag2o80nQdrYcs7wCRwDSrgtmgzKK9aMaGPmCDkqI1VBjPHqiatiTPqS7g==

    MxX5BJGRwgJEaRVsMd7XNSkG+1ygJx516/XPiSusJr35o4Lh41zZM5ndPRYKJr3HpVniqb+4/KRbasZoJfC0uwMSJKhJmCpwdBMPGLdEgvP8499+9xL6mYYoJ8hq+O/66O807IZTZXWvcxLQDuP1WpFbfI01q/J0dDnN9UEDyNguV6pd9BoIinQ98UwktoiD+KhXDu5jXPLKa6Ys0H3DUd2091y43sfvWD0oi4tSWLSO15Pz+hy2Dpa8dDQQndWZt/s78PM7sIA1ufwe3xqXeXytYpnXZVGZmBRidr0I9OhrXAh1I/vKZBGDoSVUzd3XtcZuhH8TSFsKkRCNNjiZ9JnqD5eiKNhTzGB5ZuoRAeGZ1n01GochqezwWv6zhyL5YflLY3/MzTFb2x9eypqzBDR2S5VgCzaF9tdb7UT/xjU=

/vcGDhM1ZC4CPCSrEnWzLD++gRuPvumb/KOW/L90HQoi7j1j1o+uGHn98SgW6du8VoBwwNUgXFzmrQIA1MrFmgK6+cJSQLN021pQjQfplAwG9hppSay6YvY5DcEYPDWEWt0QF+V++uvhRolv4EXfaCXgriaM7OsAIlkDYF46U66EjZ3+3+khmh4VqFYGPF27LosxWccO/pSRdDdIg1cVEPS0IMYwHyisDY39FV8w14mPdk1lXa28jyUxSqMKXk/2QQfV4KRzcIzv/i/EKUemxcG4VNR8EEmPAiByjUlp/PETXD/G2NLl5+aBoV48fx/JXt9bVXEgTEkMgjLC3kPbBAfKhgPUgN1bNhS7TPOGjCuzaH2WYBzGe2ngwuEfQ0TQlxofj4tsY8zFlDF8z9urdguIP0dtd7gG56RFrmFX+1AKvufVQ+rdjk4RvWWactyJg+CEpkEya+VfbwnASaD1zexFCIWbY7tzzdf4Sm4LNoo=

TWq7jt/t26UPhqGrnOeBcTQ0xNDVI36zeSV3+B5bcOAlKjV0rPVsAtDIcwtWXlHadJKgt14Y2l8O23VnEBUT9LpAoKSsoGPQpGib0K8X9RyaMTVUk+/NIz889B1ip130VaC17YBBwpoHyM0OLKa9je3IEBeIVT0e7J2IUDcjrCWDJ+nevwYcX445+CuGpZ3koo/kHktz1B+W35uu74ZdYh+02VP+Wb1pD/iERucTwyRm7OFBekGbXHezGdbvTNPUlbZjypg8jGGWQi1SmhXSPbUMOSYYN6B8XYW8r4kXx0tUQ+AueSd3MlOeV920s6cigeSSvSQ+TqZXe1iZEScltvB57XFQzxFa/CK7HCHVDdD871fjlIX/foDReoneOugN

tcb0zAuyxRJ6bk9L+tLSm+3xXRU2spq9UAY0PxbsSPRxfYSthAyVVXPPj07qYaNouFu2OLYQ/Xk8N9A4cSSsUtStuMdJ0eo+gt7hePTIbsW/kaZ9mI83hM2MURJnIfgaKIIpZPTSfo2Bbonf6snptpQfP2DDdvZp+asxqECePSowwzSljmKNl3F+ZkxSI6ALyFsosW1UgotuCTrTI3Qhdk5RkLqBwcSPedRrsJqW94Q=

// @filename: constants.ts
export const valueOfPi = 3.142;
// @filename: index.ts

import { valueOfPi } from "./constants.js";

export const twoPi = valueOfPi * 2;

ES2020

import { valueOfPi } from "./constants.js";

export const twoPi = valueOfPi * 2;

CommonJS

import { valueOfPi } from "./constants.js";

export const twoPi = valueOfPi * 2;

UMD

import { valueOfPi } from "./constants.js";

export const twoPi = valueOfPi * 2;

ra0E9rNcXzpseb4MpVHTuJh4UgaWEjF9ctFtzbo8QpeL+OCSLoaSDpHpi6OWxnXZM5OYQQhjY4zOv2HHIw+ozj76ZkFR89u71tAZ93jAShA=

OO4/qNqij9hoYVydCu5Y0grd53jFNYiC5koipBoGXpTGM13OXSQXdGJqRaNiVgMOjpGgHpDXhLvFObshmP5H/ZdvaNDOxzgvr4SrKVpE3hi0d3+7Wo2f53fv9TDF1k5NDNU/ngs/JSLJddttAZCrl9Gks+G0oCS3oomVMymlE8zlWXzFNUIWzyAv+Xtl5MfLJKewy5Oya3cnPMLCVb/8hsc0OntdhDm+DYnmYviMJ6HSSMAkEgU9fcqquj0LZrjb

TypeScript 命名空间

kmspCHTCI2psSV3mTFuJS0zGzsBXgXKt9IGP7HrORUhJ3hMYYbFEyhYTdUDTI7kUJ8JaiA/XXJpDYbKuwyHd2021jf3XYCOkciYDcFyLCLnmgnz3wPn6slCyGULKUTaI3Y8hyuuDYvnoCzoPFoQ0+E+WZ76HNdnnUdwybtuMdqGEGqQNz3ILSxXPtYbNqSdVPOubTj8+PFiMzLrk9I+vchLU1ebfVxUTXdpHmqzkySwxtTT/c/YTWoYYl0bB9CwJ8y1wqBleRLMIesJ4Z4SLgwv6ClMZgxkbkVsGLtrBlMkHNuBJSSznrB6mYQzw6c0u79CRuNRzYSAr8SzEis7S0D8CT9z69AQBrLih+LOjd8vkpgW6qPzoOI8/KPrkoIgqPdaPBeLE/d9bH5U57Jd7PmniA0cSyVN4H4+ifwKKigrJtNsSVnsohLV1ie3ieRhnU89JtfQVxGioUjsPViAumuIhjeaiIq/GA/4URFSUaHh2o0fsVMIFDKEyX56yNaPkYDMvY1Pn6nvlnq4rGJ7YlX2KT3Y+JtegHFCZtjmRKogjwbpsobqcPoOWx1IA8k1NAMOWNzK9JO431Z41wAsQiNDscegSQiZbahTj4i1Ph/HWNnSHQma+5HLUt6zUkRppEjwyMJPaRhA6uilObrGIrwnL/0wHLT5N9FMELE9Mvo6kSGnml8R3I3YaaMXepv7e98a5TQWljFBpwibh5ZxxPPJ3D6q/kcdhP3huvqH61no=