以下是来自official guide about module的代码段。
import x, {y} from "hot-new-module";
x(y);
我不懂语法。为什么x不在大括号中?语法是什么?
答案 0 :(得分:2)
x
是默认导出。 y
是一个命名导出。
Module.ts
export class y { }
const x = (someVar: y) => { /* */ };
export default x;
使用您的语法
导入import x, {y} from "hot-new-module";
x(y);
答案 1 :(得分:0)
我也很难理解手册的这一部分,但最终我发现了它。他们的意思是你可以拥有一个仅包含declare module "mymodulename";
的声明文件,然后即使你没有声明任何内容,你也可以从该模块导入任何内容。
这就是您导入的内容将具有 任何 类型的原因。例如:
shorthandmodule.d.ts
declare module "hot-new-module";
myscript.ts
import blabla, {x}, {anything} from "hot-new-module"
blabla , x 和任何的类型为 任何 ,&#39 ;为什么你可以输入像
这样的东西blabla(x)
x(blabla)
anything[x]
anything.unknownproperty = true
blabla 周围缺少大括号意味着它指的是模块中的default export
。每个模块只能有一个默认导出,这就是为什么只有blabla没有括号,但它可能是任何导入,因为它们都没有被声明。