"中文编程"知乎专栏原文

Typescript官方文档起的这个噱头名字: TypeScript in 5 minutes, 虽然光看完文章就不止5分钟...走完整个文档流水账如下(代码编辑器用的是VS Code)

源码在: program-in-chinese/typescript_in_5_min_zh

第一个TypeScript程序

function 问好(那谁) {
return "吃了么, " + 那谁;
} let 路人 = "打酱油的"; document.body.innerHTML = 问好(路人);

运行

tsc 问好.ts

编译生成"问好.js"文件.

添加参数类型

function 问好(那谁: string) {
return "吃了么, " + 那谁;
}

如果'那谁'的类型不符, 比如是数组类型[0,1,2], 编译时会报错, 挺好:

问好.ts(7,30): error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'.

添加接口

interface 人 {
姓: string;
名: string;
} function 问好(那谁: 人) {
return "吃了么, " + 那谁.姓 + 那谁.名;
} let 路人 = {姓: "大", 名: "黄"};

这里路人的"形状"符合"人", 类型就被判定为相符.

自己误写成了:

function 问好(那谁: 人) {
return "吃了么, " + 人.姓 + 人.名;
}

编译提示'人'是个类型而不是值, 挺好:

问好.ts(7,20): error TS2693: '人' only refers to a type, but is being used as a value here.

添加类

class 学生 {
全名: string;
constructor(public 姓: string, public 名: string) {
this.全名 = 姓 + 名;
}
} interface 人 {
姓: string;
名: string;
} function 问好(那谁: 人) {
return "吃了么, " + 那谁.姓 + 那谁.名;
} let 路人 = new 学生("大", "黄");

官方文档说添加class之后编译生成的js文件与没有class的相同, 这里不解, 实验结果是不同的.

运行第一个网络应用

为了检验js文件, 添加HTML文件:

<!DOCTYPE html>
<html>
<head><title>TypeScript你好</title></head>
<body>
<script src="问好.js"></script>
</body>
</html>

最后一个插曲:

html文件在Chrome中打开显示正确:

吃了么, 大黄

但在火狐(Firefox)浏览器中打开时报错:

The character encoding of the HTML document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. The character encoding of the page must be declared in the document or in the transfer protocol.
%E9%97%AE%E5%A5%BD.html

将View->TextEncoding从Western改为Unicode后显示正确.

后感:

tsc编译好慢!

TypeScript代码看起来更好理解一点, 编译期的反馈信息对于减少错误很有用.

中文代码示例之5分钟入门TypeScript的更多相关文章

  1. 2018-06-21 中文代码示例视频演示Python入门教程第五章 数据结构

    知乎原链 续前作: 中文代码示例视频演示Python入门教程第四章 控制流 对应在线文档: 5. Data Structures 这一章起初还是采取了尽量与原例程相近的汉化方式, 但有些语义较偏(如T ...

  2. 2018-06-20 中文代码示例视频演示Python入门教程第四章 控制流

    知乎原链 续前作: 中文代码示例视频演示Python入门教程第三章 简介Python 对应在线文档: 4. More Control Flow Tools 录制中出了不少岔子. 另外, 输入法确实是一 ...

  3. 2018-06-20 中文代码示例视频演示Python入门教程第三章 简介Python

    知乎原链 Python 3.6.5官方入门教程中示例代码汉化后演示 对应在线文档: 3. An Informal Introduction to Python 不知如何合集, 请指教. 中文代码示例P ...

  4. 2017-10-31 中文代码示例教程之Vuejs入门&后续计划

    "中文编程"知乎专栏原链 为了检验中文命名在主流框架中的支持程度, 这里把vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 过程中有一些发现, 初步看来Vuejs对中 ...

  5. 中文代码示例之Angular入门教程尝试

    原址: https://zhuanlan.zhihu.com/p/30853705 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入 ...

  6. 2017-11-07 中文代码示例之Angular入门教程尝试

    "中文编程"知乎专栏原址 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入门教程的示例代码中尽量使用了中文命名. ...

  7. 中文代码示例之Vuejs入门教程(一)

    原址: https://zhuanlan.zhihu.com/p/30917346 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示 ...

  8. 2017-11-09 中文代码示例之Vuejs入门教程(一)

    "中文编程"知乎专栏原链 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示都在本地测试通过, 源码在这里. 下面 ...

  9. 2018-08-11 中文代码示例之Spring Boot 2.0.3问好

    上次试用Spring Boot还是两年前: 中文代码示例之Spring Boot 1.3.3演示. 打算用在一个讨论组内小项目上, 于是从官网Building an Application with ...

随机推荐

  1. [Objective-C语言教程]简介(1)

    中文名:扩充C的面向对象编程语言 外文名:Objective-C 简 写:ObjC&OC 创始人:布莱德·考克斯 创始时间:1980年代 Objective-C,通常写作ObjC或OC和较少用 ...

  2. Haskell学习-functor

    原文地址:Haskell学习-functor 什么是Functor functor 就是可以执行map操作的对象,functor就像是附加了语义的表达式,可以用盒子进行比喻.functor 的定义可以 ...

  3. 基于async/non-blocking高性能redis组件库BeetleX.Redis

    BeetleX.Redis是基于async/non-blocking模式实现的高性能redis组件库,组件支持redis基础指令集,并封装更简便的List,Hashset和Subscribe操作.除了 ...

  4. JenKins使用pm2部署.net core网站

    登录事先准备好的 Jenkins 1 新建任务 2 源码管理 git 输入正确地址 3 构建环境:Delete workspace before build startsAbort the build ...

  5. win10环境下如何运行debug

    在学习汇编的时候,会需要用到debug调试程序,但是现在win10默认已经移除了这个插件,我们需要手动安装,下面就告诉大家如何在win10环境下安装debug. 1:准备工具 1.1 DOSBox 1 ...

  6. JS INPUT输入的时候全角自动转为半角

    function CtoH(obj){var str=obj.value;var result="";for (var i = 0; i < str.length; i++) ...

  7. requirement failed: Unacceptable value for property 'kafka.timeline.metrics.host_in_memory_aggregation', boolean values must be either 'true' or 'false

    requirement failed: Unacceptable value for property 'kafka.timeline.metrics.host_in_memory_aggregati ...

  8. Nginx 相关介绍

    Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unifor ...

  9. markdown用法

    Markdown 语法的目标是成为一种适用于网络的书写语言.不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTML 撰写.不需要额外标注,只要直接加标签就可以了. 一.常用部分 ...

  10. #Java学习之路——基础阶段二(第八篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...