javascript - 导出单个或多个类型

标签 javascript typescript

我正在第一次尝试 TypeScript(以及为此而设计的模块)。我了解模块背后的原理,但每当我尝试导出 type 时,我似乎遇到了问题。

例如,给出以下内容:

export type typeOne = "A" | "B" | "C" | "D";

编译时基本上给了我空输出,在生成的文件中只剩下一个我不理解的“use strict”

我最初开始尝试做的是在 Constants 对象中导出多个 enum 类型:

export Constants {
    type typeOne = "A" | "B" | "C" | "D";
    type typeTwo = "X" | "Y" | "Z";
}

但似乎我什至无法让基本案例发挥作用。我是否遗漏了一些非常明显的东西,或者我是否遇到了 TypeScript 中的某种限制?

最佳答案

由于 javascript 不是类型化语言,因此所有声明的类型都会在编译过程中被删除。

您定义的类型只是字符串,编译器将根据特定的值集检查它们。

这三个函数:

function fn1(value: "A" | "B" | "C"): boolean {
    return value === "A" || value === "B" || value === "C";
}

function fn2(value: string): boolean {
    return value === "A" || value === "B" || value === "C";
}

function fn3(value): boolean {
    return value === "A" || value === "B" || value === "C";
}

将被编译为相同的js函数:

function fnN(value) {
    return value === "A" || value === "B" || value === "C";
}

区别在于编译时间(以及在任何普通 IDE 中):

fn1("no good");

将导致编译错误,因为传递的字符串不是我们定义的 3 个特定值,但 fn2fn3 可以使用该值。

关于javascript - 导出单个或多个类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37149731/

相关文章:

javascript - 如何使用 Node 快速测试嵌套 bool 值的存在和值?

typescript - Kendo 可排序/集成 - 网格 - 特定刷新后不排序

typescript - 如何在 Dart 中定义 map 类型的形状

javascript - 如何添加动态表单元素但保留其值(JS)

javascript - CSS:如何将彩色图像转换为灰色或黑白图像

javascript - Jquery按下按钮向下滚动到每个部分的顶部

javascript - 如何重新排序 angularjs ngTable 分页?

angular - 将 jasmie .toHaveBeenCalledWith() 函数与 Moment 对象一起使用

angular - Angular `ngOnInit` 中的异步/等待

javascript - 在页面加载后动态插入 HTML(并在按键后更改)