相关疑难解决方法(0)

打字稿导出与默认导出

export和之间的Typescript有什么区别default export.在所有教程中,我看到人们在export他们的课程中,如果我default在导出之前没有添加关键字,我就无法编译我的代码.

另外,我在官方打字稿文档中找不到任何默认导出关键字的痕迹.

export class MyClass {

  collection = [1,2,3];

}
Run Code Online (Sandbox Code Playgroud)

不编译.但:

export default class MyClass {

  collection = [1,2,3];

}
Run Code Online (Sandbox Code Playgroud)

请问.

错误是: error TS1192: Module '"src/app/MyClass"' has no default export.

typescript ecmascript-6

227
推荐指数
3
解决办法
9万
查看次数

枚举类型未在运行时定义

我有一个问题,Typescript编译器成功编译我的代码,但运行时给了我未定义的类型错误.

在我的应用中,我创建了一个types.ts文件,其中包含多个其他ts文件之间共享的内容 它包含一个字符串枚举,如:

enum MyEnum {
  One = "one";
  Two = "two";
}
Run Code Online (Sandbox Code Playgroud)

当我这样定义它.编译器让我在其他ts文件中使用它,看起来很开心.但是,在运行时我收到错误"MyEnum未定义".

我知道有两种方法可以解决这个问题:

  1. 在文件中定义枚举使用它.但我不认为这会解决其他想要使用它的文件.
  2. 在types.ts文件中使用"export",并在每个使用它的地方显式导入.

我对Typescript很新,我觉得我可能误解了一些基本的东西.

首先,我不明白为什么如果会出现运行时错误,Typescript编译器会愉快地编译我的代码.我会理解它,如果我使用了declare关键字,告诉编译器在运行时应该有什么东西可用,但在这种情况下我不明白为什么它应该假设枚举来自除了types.ts文件以外的任何地方.

其次,我想在我的应用程序中全局定义类型,并让它们在任何地方都可用,而不必在每次使用它们时都导入它们.我该如何做到这一点?或者这可能被认为是不好的做法?

我使用的是Typescript 2.6,我的配置如下所示:

{
  "compilerOptions": {
    /* Basic Options */
    "target": "es6",
    "module": "commonjs",
    "lib": ["es6", "es7", "esnext"],

    "sourceMap": true /* Generates corresponding '.map' file. */,
    "outDir": "build" /* Redirect output structure to the directory. */,
    "removeComments": true /* Do not emit comments to output. */,

    /* Strict Type-Checking Options */
    "strict": true /* Enable …
Run Code Online (Sandbox Code Playgroud)

typescript

20
推荐指数
5
解决办法
1万
查看次数

标签 统计

typescript ×2

ecmascript-6 ×1