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

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代码看起来更好理解一点, 编译期的反馈信息对于减少错误很有用.

转载于:https://www.cnblogs.com/program-in-chinese/p/typescript-in-5-minutes-with-sample-code-in-Chinese.html

中文代码示例之5分钟入门TypeScript相关推荐

  1. 中文代码示例之Spring Boot 2.0.3问好

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

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

    为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示都在本地测试通过, 源码在这里. 下面省略了很多原教程的说明内容, 而着重于代码示例 ...

  3. python入门代码示例-总算知道python入门代码示例

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.作为今年来越来越流行的语言,我们该如何学习或者转行学习Python呢,这里小迹为大家介绍如何入门学习Python.以下是小编为你整理 ...

  4. BIO,Socket网络编程入门代码示例,NIO网络编程入门代码示例,AIO 网络编程

    BIO,Socket网络编程入门代码示例 1.BIO服务器端程序 package cn.itcast.bio;import java.io.InputStream; import java.io.Ou ...

  5. python代码示例-总算知道python入门代码示例

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.作为今年来越来越流行的语言,我们该如何学习或者转行学习Python呢,这里小迹为大家介绍如何入门学习Python.以下是小编为你整理 ...

  6. 中文代码示例之冒泡算法, 后感

    以前探讨过中文命名在业务部分的优势大于算法部分. 今天又一次看到了这个以冒泡算法的例子: 刘然:批判易语言的人是否用过这门语言,批判它的原因又是什么?有些感触. 先尝试对变量命名进行改进, 来看看是否 ...

  7. python词云图代码示例 无jieba_Python爬虫入门-jieba库制作词云图

    1.钱当然很重要,这我不是不知道:我一天何尝不为钱而受熬苦!可是,我又觉得,人活这一辈子,还应该有些另外的什么才对-- 2.我认为,每个人都有一个觉醒期,但觉醒的早晚决定个人的命运. 3.在这个世界上 ...

  8. 可下载:60分钟入门PyTorch(中文翻译全集)

    来源:机器学习初学者本文约9500字,建议阅读20分钟官网教程翻译:60分钟入门PyTorch(全集) 前言 原文翻译自:Deep Learning with PyTorch: A 60 Minute ...

  9. 【Flutter】Future 与 FutureBuilder 异步编程代码示例 ( FutureBuilder 构造函数设置 | 处理 Flutter 中文乱码 | 完整代码示例 )

    文章目录 一.FutureBuilder 简介 二.处理 Flutter 中的中文乱码 三.完整代码示例 四.相关资源 一.FutureBuilder 简介 FutureBuilder 本质是组件 : ...

最新文章

  1. 交换机调试工具_工业以太网交换机安装流程图解
  2. 利润表和资产负债表开发小结
  3. html字体渐变颜色的设置颜色代码,使用CSS3实现字体颜色渐变的实现
  4. 定位CPU异常抖动---tomcat热部署的坑[转载]
  5. 我在GNU/Linux下使用的桌面环境工具组合
  6. JupyterHub与OpenLDAP集成
  7. Hadoop大数据开发基础课后答案
  8. CPU测评程序、指标、工具
  9. iptv管理系统php制作,云水日记-双子星IPTV管理系统搭建教程
  10. 【githubboy】一份开源的小型金融知识图谱构建流程,可帮助你更好的学习与理解知识图谱的使用
  11. pytorch GPU内存管理
  12. App接入阿里云号码认证服务 一键登录 Java后端服务部分
  13. ios textfield 拼音输入 完成才录入
  14. 如何利用SEO方式使网站增加流量
  15. matlab示波器绘图工具,快速绘制Simulink示波器波形
  16. SSM框架报错分析(一)——There is no getter for property named 'XXX' in 'class java.lang.String'...
  17. 软件开发团队中的角色
  18. Hadoop分布式集群安装
  19. 国内知名商城系统对比评测,告诉你多用户商城系统选哪个
  20. Beyond Compare如何连接FTP进行文件夹的比较

热门文章

  1. 排序算法 | 快速排序,算法的图解、实现、复杂度和稳定性分析与优化
  2. 数据挖掘:基于TF-IDF算法的数据集选取优化
  3. 北大OJ百练——4074:积水量(C语言)
  4. SpringMVC中@ResponseBody和@RequestBody的使用
  5. 面向对象(上)知识点
  6. java区分不同的excel_Java处理excel两种不同的方式
  7. python快速上手下载_初学者如何尽快上手python
  8. 边缘使用 K8s 门槛太高?OpenYurt 这个功能帮你快速搭建集群!
  9. 在游戏运营行业,Serverless 如何解决数据采集分析痛点?
  10. 如何使用 Istio 进行多集群部署管理(一)