typescript 学习

typescript将在不久的将来从前端大一统的趋势中脱颖而出成为主流编译器。学习ts对前端开发人员来说是不可或缺的。同时,也要抓紧学习es2015/6/7。ts和es6并不是对立的。而是相辅相成的。ts的竞争和打击对象实质上是babel……

官方资料

 # 官方地址:
 https://www.tslang.cn

 # github:
 https://github.com/Microsoft/TypeScript

 # 官方文档
 http://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html

安装与编译:

# 安装
npm install -g typescript
# 编译
tsc helloworld.ts

 

demo1:支持Commonjs规范

# helloworld.ts
import app from './app'
console.log(app)# app.ts
export default {sayHello () {console.log("Hello World!!")}
}

执行tsc helloworld.ts

控制台执行:node helloworld

控制台输出:Hello World!!

 

 

demo2: 快速扫基础篇

# 基础类型
let isDone: boolean = false;
let decLiteral: number = 6;
let name: string = "bob";# 模板字符串 和 内嵌表达式
let name: string = `Gene`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ name }.I'll be ${ age + 1 } years old next month.`;

# 数组 与 泛型数组
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];# 元组
let x: [string, number];
x = ['hello', 10]; // OK
x = [10, 'hello']; // Error
console.log(x[0].substr(1)); // OK
console.log(x[1].substr(1)); // Error, 'number' does not have 'substr'
x[3] = 'world'; // OK
onsole.log(x[1].toString()); // OK, 'string' 和 'number' 都有 toString
x[6] = true; // Error, 布尔不是(string | number)类型

 

demo3: 快速扫基础篇2

# 枚举
// 默认情况下,从 0 开始为元素编号
enum Color {Red, Green, Blue};
let c: Color = Color.Green; // 1enum Color {Red = 1, Green, Blue};
let c: Color = Color.Green; // 2enum Color {Red = 1, Green = 2, Blue = 4};
let c: Color = Color.Green; // 2//查找相应的名字
enum Color {Red = 1, Green, Blue};
let colorName: string = Color[2];
console.log(colorName) // Green

# 任意值
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

let list: any[] = [1, true, "free"];
list[1] = 100;# void
function warnUser(): void {alert("This is my warning message");
}

 

demo4 : ts的核心之一 接口

# 接口初探
function printLabel(labelledObj: { label: string }) {console.log(labelledObj.label);
}
let myObj = { size: 10, label: "Size 10 Object" };
printLabel(myObj);  // Size 10 Object

类型检查器会查看 printLabel 的调用。 printLabel 有一个参数,并要求这个对象参数有一个名为 label 类型
为 string 的属性。 需要注意的是,我们传入的对象参数实际上会包含很多属性,但是编译器只会检查那些必需
的属性是否存在,并且其类型是否匹配。// 将接口单独抽离出来
interface LabelledValue {label: string;
}
function printLabel(labelledObj: LabelledValue) {console.log(labelledObj.label);
}
let myObj = {size: 10, label: "Size 10 Object"};
printLabel(myObj);类型检查器不会去检查属性的顺序,只要相应的属性存在并且类型也是对的就可以。# 接口可选属性
interface SquareConfig {color?: string;width?: number;
}function createSquare(config: SquareConfig): {color: string; area: number} {let newSquare = {color: "white", area: 100};if (config.color) {newSquare.color = config.color;}if (config.width) {newSquare.area = config.width * config.width;}return newSquare;
}
let mySquare = createSquare({color: "black"}); // { color: 'black', area: 100 }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机中央处理器cpu_中央处理器(CPU)| 计算机科学组织

计算机中央处理器cpu中央处理器(CPU) (Central Processing Unit (CPU)) The CPU is the brain of the computer system. It works as an administrator of a system. CPU是计算机系统的大脑。 它以系统管理员的身份工作。 All the operations within the system are supervised…

computed set 自定义参数_深入理解vmodel之自定义组件用法

根据上一篇《深入理解 v-model 之表单用法》基本对 v-model 有了比较深的理解&#xff0c;接下来我们看看它如何在自定义组件中使用。首先&#xff0c;我们知道下面两个用法等价的&#xff1a;<input v-model"msg" /><input :value"msg" input&qu…

AYUSH的完整形式是什么?

AYUSH&#xff1a;阿育吠陀&#xff0c;瑜伽和自然疗法&#xff0c;乌纳尼&#xff0c;悉达多和顺势疗法 (AYUSH: Ayurvedic, Yoga and Naturopathy, Unani, Siddha and Homeopathy) AYUSH is an abbreviation of Ayurvedic, Yoga and Naturopathy, Unani, Siddha, and Homeopa…

arraylist能否接收强转类型_ArrayList 源码解析

点击上方"IT牧场"&#xff0c;选择"设为星标"技术干货每日送达&#xff01;前言 JDK源码解析系列文章&#xff0c;都是基于JDK8分析的&#xff0c;虽然JDK14已经出来&#xff0c;但是JDK8我还不会&#xff0c;我…类图 实现了RandomAccess接口&#xff0c;…

mc有什么红石机器人_我的世界10月考试!来测测你的MC成绩吧~

考试规则&#xff1a;本次考试为闭卷考试&#xff0c;考生需要在30分钟内完成试卷。试卷总分为100分&#xff0c;其中包括单项选择题50分&#xff0c;多项选择题20分&#xff0c;判断题30分。考试内容包括《我的世界》手游1.11.0及以上版本在不添加任何模组的情况下的所有游戏内…

自定义分页 html,MVC 自定义HtmlHelper帮助类型之分页

方法一&#xff1a;在项目中增加App_Code文件夹&#xff0c;新增一个MyHtmlper.cshtml视图文件写入代码&#xff1a;helper Pagger(int pageIndex, int pageCount){for (int i 1; i < pageCount; i){if (i ! pageIndex){(i)}else{i}}}新增一个HomeControllerpublic class H…

js console 输出到文件_Node.js核心入门

正文核心模块是Node.js的心脏&#xff0c;主要是有一些精简高效的库组成(这方面和Python有很大的相似之处)&#xff0c;为Node.js提供了基础的API。主要内容包括&#xff1a;Node.js核心入门(一)全局对象常用工具事件机制Node.js核心入门(二)文件系统访问HTTP服务器与客户端全局…

eclipse中项目内存溢出问题

2019独角兽企业重金招聘Python工程师标准>>> SpringBoot项目热启动Perm区内存溢出。 Failed to instantiate [org.springframework.orm.jpa.JpaVendorAdapter]: Factory method jpaVendorAdapter threw exception; nested exception is java.lang.OutOfMemoryErro…

express rest_Express / Node中用于REST API的邮递员工具

express restWhen dealing with routes (like in express), we may use any of the REST verbs and at times, the browser is limited to facilitate testing the routes/REST API. 在处理路由时(如快速表达)&#xff0c;我们可以使用任何REST动词&#xff0c;有时浏览器会受到…

形象易懂讲解算法I——小波变换

https://zhuanlan.zhihu.com/p/22450818?referdong5 最早发于回答&#xff1a;能不能通俗的讲解下傅立叶分析和小波分析之间的关系&#xff1f; - 咚懂咚懂咚的回答现收入专栏。从傅里叶变换到小波变换&#xff0c;并不是一个完全抽象的东西&#xff0c;可以讲得很形象。小波变…

使用Linux命令行归档文件

存档文件 (Archiving Files) As we already understand what Compression (Compression techniques in Linux) is? We shall learn about Archives. We prefer compression as it is convenient to send file compressed through a network but sometimes it is not a smart w…

http缓存机制之304状态码

在网上看到一篇关于解释浏览器缓存更新机制304状态码的文章&#xff0c;里面说如果请求头中的If-Modified-Since字段和If-None-Match字段的值分别和响应头中的Last-Modified字段和Etag字段值一致&#xff0c;服务器就会返回304状态码(无响应体)&#xff0c;浏览器就从本地读取缓…

计算机选配 注意事项,选择鼠标注意事项有哪些

选择鼠标注意事项有哪些每台电脑旁边都有了一个忠实的伴侣&#xff0c;那就是“Mouse”--鼠标。选择鼠标最重要的一点就是质量&#xff0c;无论它的功能有多强大、外形多漂亮&#xff0c;如果质量不好那么一切都不用考虑了。那么&#xff0c;选择鼠标注意事项有哪些?笔记本鼠标…

js 验证护照_护照本地策略第2部分| Node.js

js 验证护照In my last article (Passport local strategy section 1 | Node.js), we started the implementation of the passport-local authentication strategy. We also looked at the various requirements to get started with the login form. In this article, we wil…

svn版利用什么技术实现_金葱粉涂料印花利用了什么技术?

金葱粉涂料印花利用了什么技术:金葱粉用涂料而不是用染料来生产印花布已经非常广泛&#xff0c;以致开始把它当作一种独立的印花方式。涂料印花是用涂料直接印花&#xff0c;该工艺通常叫做干法印花&#xff0c;以区别于湿法印花(或染料印花)。通过比较同一块织物上印花部位和未…

网站换服务器需要注意什么问题,网站更换服务器要注意哪些事项

原标题&#xff1a;网站更换服务器要注意哪些事项网站在运营的过程中&#xff0c;出于某种考虑&#xff0c;我们会将网站进行服务器的变更&#xff0c;那么在进行服务器变成过程中&#xff0c;需要注意哪些事项。一、如果是跨服务商更换网站服务器&#xff0c;需要做备案迁移。…

kafka分区与分组原理_大数据技术-Kafka入门

在大数据学习当中&#xff0c;主要的学习重点就是大数据技术框架&#xff0c;针对于大数据处理的不同环节&#xff0c;需要不同的技术框架来解决问题。以Kafka来说&#xff0c;主要就是针对于实时消息处理&#xff0c;在大数据平台当中的应用也很广泛。大数据学习一般都有哪些内…

ActiveReports 报表控件官方中文新手教程 (1)-安装、激活以及产品资源

&#xfeff;&#xfeff;本系列文章主要是面向初次接触 ActiveReports 产品的用户&#xff0c;能够帮助您在三天之内轻松的掌握ActiveReports控件的基本用法&#xff0c;包含安装、激活、创建报表、绑定数据源以及公布等内容。本篇文章我们就从安装产品開始带您开启轻松的 Ac…

如何在React Native中使用React JS Hooks?

In my articles, Im going to be using either expo or snack online IDE and android emulator. 在我的文章中&#xff0c;我将使用expo或点心在线IDE和android模拟器。 React Hooks is simply an awesome tool that helps us use states and other react features without w…

华为P40pro 手机云台_2020年目前拍照最好的手机推荐!华为P40 Pro!DXO全球榜首

目前最热门的拍照手机自然是华为P40 Pro&#xff0c;其相机性能直接问鼎DXOMARK手机相机评分榜首。对于拍照要极求高的用户&#xff0c;华为P40 Pro将是一个非常不错的选择。那么&#xff0c;华为P40 Pro除了出色的相机之外&#xff0c;其它方面表现如何呢&#xff1f;下面&…