怎么定义TypeScript呢? TypeScript是一个工具 是一个编译器

  1. 编译代码

    TypeScript,通过它的能力,默认使用tsc命令,可以根据.ts为后缀名的文件生成一个新的js文件

2、类型注解

TypeScript里的类型注解是一种轻量级的为函数或变量添加约束的方式。TypeScript提供了静态的代码分析,它可以分析代码结构和提供的类型注解。

function doSth(who: string): string {
return "I want to say hello to " + who;
} let who = 'her'; const doWhat = doSth(who); console.log('doWhat:', doWhat)
// doWhat: I want say hello to her

这里插个题外话,如果部分语法产生error的话,要考虑tsconfig.json这样的配置文件(比如lib部分)是否支持了你需要的Javascript规范,如果不支持的话,建议使用polyfill

3、接口

允许我们在实现接口时候只要保证包含了接口要求的结构就可以

interface Girl {
hair: string;
face: string;
} function describe(girl: Girl): string {
let words = 'she has '
let decs = Object.entries(girl)
let len = decs.length for (let i = 0; i < len; i++) {
const [where, like] = decs[i];
words+=(like + ' ' + where)
words+=(i === len - 1 ? '' : ' and ')
}
return words
} const sentence = describe({
hair: 'long',
face: 'beautiful'
}) console.log('sentence:', sentence);
// sentence: she has long hair and beautiful face

4、类

支持基于类的面向对象编程

在构造函数的参数上使用public等同于创建了同名的成员变量

class She {
praise: string;
constructor(public hair: string, public face: string) {
// this.praise = hair + ' hair' + " and " + face + ' face';
}
} interface Girl {
hair: string;
face: string;
} function describe(girl: Girl): string {
let words = 'she has '
let decs = Object.entries(girl)
let len = decs.length for (let i = 0; i < len; i++) {
const [where, like] = decs[i];
words+=(like + ' ' + where)
words+=(i === len - 1 ? '' : ' and ')
}
return words
} const she = new She('long', 'beautiful') const sentence = describe(she) console.log('sentence', sentence);

上面这段代码通过ts编译,成为了下面这段代码

var She = /** @class */ (function () {
function She(hair, face) {
this.hair = hair;
this.face = face;
// this.praise = hair + ' hair' + " and " + face + ' face';
}
return She;
}());
function describe(girl) {
var words = 'she has ';
var decs = Object.entries(girl);
var len = decs.length;
for (var i = 0; i < len; i++) {
var _a = decs[i], where = _a[0], like = _a[1];
words += (like + ' ' + where);
words += (i === len - 1 ? '' : ' and ');
}
return words;
}
var she = new She('long', 'beautiful');
var sentence = describe(she);
console.log('sentence', sentence);

看起来,只是多了一些特殊的注释,以及修改了一些局部变量名,所以ts主要的功能其实是为了规范书写,校验传入参数是否正确,从而实现更高质量的代码!

深入理解TypeScript——第一章:上手篇的更多相关文章

  1. ASP.NET自定义控件组件开发 第一章 第二篇 接着待续

    原文:ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 很感谢大家给我的第一篇ASP.NET控件开发的支持!在写这些之前,我也看了 ...

  2. .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员 ...

  3. net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第一章 入门篇-开篇及总体规划

    .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划   原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来 ...

  4. 深入理解Magento - 第一章 - Magento强大的配置系统

    深入理解Magento 作者:Alan Storm翻译:zhlmmc 前言第一章 - Magento强大的配置系统第二章 - Magento请求分发与控制器第三章 - 布局,块和模板第四章 - 模型和 ...

  5. 【设计模式+原型理解】第一章:使用Javascript来巧妙实现经典的设计模式

    刚开始学习设计模式之前,我是没想说要学习设计模式的,我只是因为想学习JS中的原型prototype知识,一开始我想JS中为什么要存在原型这个东西?于是慢慢通过原型而接触到设计模式,后来发现我这个过程是 ...

  6. 徒手用Java来写个Web服务器和框架吧<第一章:NIO篇>

    因为有个不会存在大量连接的小的Web服务器需求,不至于用上重量级服务器,于是自己动手写一个服务器. 同时也提供了一个简单的Web框架.能够简单的使用了. 大体的需求包括 能够处理HTTP协议. 能够提 ...

  7. 第一章入门篇CSS样式的分类、盒模型

    1.CSS样式的分类 CSS样式分为一项4种: 1.内联样式表,直接写在元素style属性里面的样式,如 <p style="color:red;">内联样式</ ...

  8. ASP.NET自定义控件组件开发 第一章 第三篇

    原文:ASP.NET自定义控件组件开发 第一章 第三篇 第三篇:第一章的完结篇 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待 ...

  9. ASP.NET自定义控件组件开发 第一章 第三篇 第一章的完结篇

    ASP.NET自定义控件组件开发 第一章 第三篇   第三篇:第一章的完结篇 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ...

随机推荐

  1. Dubbo详解

    什么是DubboDubbo是一个分布式服务框架,致力于提供高性能和透明化的远程服务调用方案,这容易和负载均衡弄混,负载均衡是对外提供一个公共地址,请求过来时通过轮询.随机等,路由到不同server.目 ...

  2. Java数据结构——图的基本理论及简单实现

    1. 图的定义图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的:其中,点通常被成为"顶点(vertex)",而点与点之间的连线则被成为"边 ...

  3. 尝试写一写4gl与4fd

    4gl DATABASE ds   GLOBALS "../../config/top.global"   DEFINE g_curs_index           LIKE t ...

  4. mysql图形化工具基本操作

    一.DataType 常见的数据类型: - `int` 整数 - `varchar(len)` 字符串 - `tinyint(1)`布尔值 二.设置字段的特殊标识 - `PK`(`Primary Ke ...

  5. springboot-ssm的pom.xml

    springboot-ssm的pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu ...

  6. 传统servelt项目之分页操作

    需求说明: • 演示最终分页效果 • 提供分页素材     • 分页的作用 • 数据量大,一页容不下 • 后台查询部分数据而不是全部数据 • 降低带宽使用,提高访问速度     • 分页的实现思路 • ...

  7. MyEclipse2017 安装MAVEN插件办法

    笔者辛苦所写,如要留用,请标明出处,谢谢 —————————————————————————————————————————————————————— 笔者由于用到的项目使用到MAVEN,为了以后搭建 ...

  8. Python基础(闭包函数、装饰器、模块和包)

    闭包函数 格式: def 函数名1(): def 函数名2(): 变量 = 值 return 变量 return 函数名2 func = 函数名1() key = func()

  9. Copy a Xaml object

    <Control.Resources> <Button Click="Button_OnClick" x:Key="MyButton"> ...

  10. Spine学习九 - 冰冻效果

    想象这样一个效果,一个人被冰霜攻击命中,然后这个人整个就被冰冻了,那么spine动画要如何实现这个效果呢? 1.首先需要一个Spine动画,这个动画应该是相对静止的,因为人物已经被冰冻了,那么这个人儿 ...