Skip to content
AD
AD

Typescript

概述

Typescript(TS)是Javascript的超集。在完全兼容JS写法的基础上,TS增强了JS中缺失的类型检查,简化了JS中面向对象的实现,并且提供了对Javascript标准ES5的向下兼容。

Typescript是编译型语言。按照工程惯例,Typescript脚本需要编译为Javascript脚本后提供给浏览器使用。考虑到不是所有用户的浏览器都支持ES6,Typescript编译器可以将TS脚本编译为ES5标准的JS,确保开发者只需要掌握最现代的写法。

学习TS需要你拥有一些JS基础,你可以在这里查看本站的Javascript教程。

预览

Typescript相比于Javascript最明显的提升就是提供了强制性的类型检查,例如你可以定义一个接口,然后支持Typescript的IDE将会检查你指定到该接口的对象是否符合接口定义的规范。

typescript
// noinspection JSAnnotator
// 这里是你简单编写的 Typescript 代码
interface ErrorMessage {
    
name
: string;
value
: string;
} function
validate
(...
messages
: [string, string][]): ErrorMessage[] {
let
errors
: ErrorMessage[] = [];
for (let
message
of
messages
) {
if (
message
[1] == "") {
let
msg
: ErrorMessage = {
name
:
message
[0],
value
: "输入值为空"}
errors
.
push
(
msg
)
} if (
message
[0] == "password") {
if (
message
[1].
length
< 8) {
let
msg
: ErrorMessage = {
name
:
message
[0],
value
: "密码长度过短,长度应大于等于8"}
errors
.
push
(
msg
)
} } if (
message
[0] == "phone_number") {
if (
message
[1].
length
!= 11) {
let
msg
: ErrorMessage = {
name
:
message
[0],
value
: "电话号码需要为11位数字"}
errors
.
push
(
msg
)
} } } return
errors
;
} function
generateMsg
(
errors
: ErrorMessage[]): string {
let
message
= "";
for (let
error
of
errors
) {
message
+= `[ ${
error
.
name
} ] ${
error
.
value
}<br>`;
} return
message
;
}
javascript
// 这里是编译器生成的 Javascript 代码
function validate() {
    var messages = [];
    for (var _i = 0; _i < arguments.length; _i++) {
        messages[_i] = arguments[_i];
    }
    var errors = [];
    for (var _a = 0, messages_1 = messages; _a < messages_1.length; _a++) {
        var message = messages_1[_a];
        if (message[1] == "") {
            var msg = { name: message[0], value: "输入值为空" };
            errors.push(msg);
        }
        if (message[0] == "password") {
            if (message[1].length < 8) {
                var msg = { name: message[0], value: "密码长度过短,长度应大于等于8" };
                errors.push(msg);
            }
        }
        if (message[0] == "phone_number") {
            if (message[1].length != 11) {
                var msg = { name: message[0], value: "电话号码需要为11位数字" };
                errors.push(msg);
            }
        }
    }
    return errors;
}
function generateMsg(errors) {
    var message = "";
    for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {
        var error = errors_1[_i];
        message += "[ ".concat(error.name, " ] ").concat(error.value, "<br>");
    }
    return message;
}

Javascript并不要求类型,在Typescript中定义的类型实际上是在帮助开发者。这样的好处是,IDE可以在开发者工作时提供更精准智能的代码补全,且只要编译通过,生成的Javascript在运行时不应该有任何编码问题导致的错误。

你可能已经发现,编译生成的Javascript完全没有使用到ES6中方便快捷的新特性,这是Typescript编译器的功劳,可以让你的脚本能在更多的浏览器上运行。你无需担心编译结果的可靠性,只要Typescript在编写时没有报错,编译就不会出错。

贡献者

页面历史

贡献/支持 Code Space

请查看贡献页面,帮助 Code Space 完善内容以提供更好的文档服务。
或者,也可以浅浅支持芒果一下~