1. TypeScript 的介绍

  • 完整教程TypeScript 入门教程
  • TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准,由微软开发的自由和开源的编程语言
  • 通俗的说,TypeScript 在 JavaScript 的基础上添加了类型支持,可以在代码编写阶段就发现代码的错误
  • 浏览器本身不支持直接运行 TypeScript 代码,需要将其编译成 JavaScript 代码
  • TypeScript 代码的语法更为严格,因此会引申出一系列相关语法(全局变量声明,可选)
  • 在编译的 TypeScript 代码过程中,会展示错误信息会并移除 TypeScript 的相关代码,只保留原始的js代码
  • 总的来说,TypeScript 可以帮助程序员在代码编写的阶段提早发现其代码错误,但是 TypeScript 本身需要一系列的声明才能正常工作,这些声明的语法也带来了一定的学习成本

2.编译 TypeScript 的工具包(VScode)

  • 全局安装将ts代码编译成js代码的工具包
npm install -g typescript
  • 输出版本号,查看是否安装成功
tsc -v
  • 执行编译:tsc ts文件路径,之后会在当前目录下生产同名的js文件
tsc demo01.ts

3.node环境中直接运行ts文件

  • 插件安装
cnpm i -g ts-node
  • 运行命令
ts-node demo01.ts

4.类型声明

  • 语法:var [变量名] : [类型] = 值
  • 基本类型
//声明字符串
var str : string = "Hello World!"
//声明数字
var num : number = 123
//声明任意类型
var x : any = ""
//声明布尔类型
var flag : boolean = true
//声明null
var y : null = null
//声明undefined
var z : undefined = undefined
//函数类型包含2个部分,返回值类型和参数类型
function hello(): void {
console.log("Hello Today")
}
  • 数组:除了声明当前数据类型是数组类型,还需要声明数组元素的类型
//声明数组 数组元素的数据类型不限制
var arr : any[] = []
//声明数组 数组元素只能是数字
var arr2 : number[] = []
  • 对象:所有属性必须初始化时定义好,不能后期追加,属性值的类型后期也不能改
var p1 = {
id: 1,
name: "张三",
age: 20
} //报错 不能修改数据类型
p1.id = '2'
//报错 不能新增属性
p1.hobby = 666
  • 类型推论:当初始化一个变量时,ts会根据右边的值来自动设定其数据类型,一旦确定了变量的数据类型,就不能将其他类型的数值赋值给他,也不能调其他类型的方法
var str : string = "Hello World!"
//等价于
var str = "Hello World!"

5.多类型与类型别名

  • 一个数据声明时允许有2种以上的数据类型
//既可以是字符串,也可以是数字
var width : string|number = '100px'
//数组元素既可以是字符串也可以是数字
var arr : (string|number)[] = [1,'a']
//可以是字符串,也可以是数组
var data : string|any[] = 'hello'
  • 类型别名:定义一个类型名称来代替类型声明,一来可以被多处引用,而来直观简练,也方便统一管理
//类型别名(多类型)
type Arr_S_N = (string|number)[]
//以下写法是等价的
var arr3 : (string|number)[] = [1,'a']
var arr4 : Arr_S_N = [1,'a'] //类型别名(对象类型)
type Person = {
name:string
age:number
} var p1:Person = {
name:"kyo",
age: 20
}

6.interface 接口

  • 可以使用 interface 接口来规范一个对象类型的数据,除了定义属性值的类型,还能定义属性是否可读,是否可选
  • 注意:不得中途添加属性,已经定义的属性必须要有初始值,除非属性定义成可选
//定义一个类
interface Person {
//只读属性
readonly id: number
name: string
age: number
sayHi: ()=>void
sayHello(word:string): void
friend?:string
//定义任意属性
[propName: string]: any;
} //创建基于类的对象
var boy : Person = {
id: 1,
age: 20,
name: "kyo",
sayHi:function(){
console.log('Hi')
},
sayHello:function(word = 'hello'){
console.log(word)
},
} //添加任意属性
boy.hobby = "pc game"
boy.hobby2 = "pc game2" //报错(id属性只读)
boy.id = 2
  • 接口继承:通过extends让子类继承父类所有属性
//创建一个父类
interface Person {
name:string
age:number
} //创建基于父类的子类
interface Student extends Person{
school:string
} //创建一个学生
var s1 = {
name:"张三",
age: 20,
school:"unname"
}

7.class类

  • 相当于js构造函数的语法糖,使用new来创建对象
class Person {
name: string
age: number
//构造函数
constructor(name:string='',age:number=0){
//接收并赋值
this.name = name
this.age = age
}
sayHello():void{
console.log(`i am ${this.name} Hello`)
}
} var p1 = new Person('kyo',20)

TypeScript 笔记(一)的更多相关文章

  1. TypeScript笔记[5]泛型+Dictionary 转

    TypeScript笔记[5]泛型   在C++.C#.Java等主流编程语言中,一般对泛型编程提供了支持.合理利用泛型,可以提高开发效率.提升代码质量. 例如在C++编程语言中,常常利用下面的结构表 ...

  2. TypeScript笔记 5--变量声明(解构和展开)

    解构是什么 解构(destructuring assignment)是一种表达式,将数组或者对象中的数据赋给另一变量. 在开发过程中,我们经常遇到这样问题,需要将对象某个属性的值赋给其它两个变量.代码 ...

  3. TypeScript笔记 3--基础类型

    强类型是TypeScript值得称赞的特性,对于很多后端开发者来说是绝对的福利,加上静态检查使得我们可以在开发态就可以发现很多问题. TypeScript中的类型和JavaScript差不多,下面我们 ...

  4. TypeScript笔记 1--环境搭建

    TypeScript是什么 Typescript是JavaScript的超集,支持ES6特性并且提供了类型系统,可以编译成Javascript.是微软开发且已经在github上开源. ES6(ES20 ...

  5. TypeScript笔记

    #安装typescript [1] npm install -g typescript #编译typescript tsc test.ts //会生成test.js文件 #泛型,即使用“类型变量”,函 ...

  6. 2. TypeScript笔记

    1. 安装node.js之后 需要测试npm命令 2.命令正常安装TypeScript 3.安装Egret egret 命令

  7. 学习TypeScript 笔记

    TypeScript 什么是TypeScript TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准. TypeScript 由微软开发的自由和开源的编程 ...

  8. TypeScript笔记 6--接口

    接口定义 接口和Java语言一样,都是通过关键字interface定义的,如下例子: interface People { name: string; age: number; hobby?: str ...

  9. TypeScript笔记 4--变量声明

    在上一篇:基础变量中我们在声明变量时使用了关键字let,这和JS中的var有点类似. 语法 基本语法:let 变量名:类型.当然类型不是必须的. let x:number; let y:string ...

  10. TypeScript学习笔记(五):接口

    使用接口 在前面的笔记中我们知道可以使用Object Type来指定参数的属性,如下: function printLabel(labelledObj: {label: string}) { cons ...

随机推荐

  1. Asp.net core 学习笔记之 authen + autho + oidc + oauth + spa 第九篇 (external login)

    External login 就是指通过 Google, Microsoft, Facebook account 做登入. https://docs.microsoft.com/en-us/aspne ...

  2. 前端基本功——面试必问系列(1):都2024了,还没吃透Promise?一文搞懂

    写在前面: 大家好,我是山里看瓜,该系列文章是为了帮助大家不管面试还是开发对前端的一些基本但是很重要的知识点认识更加深入和全面. 想写这个系列文章的初衷是:我发现前端的很多基本知识,使用起来很简单,定 ...

  3. Servlet——Request对象-请求数据&请求参数

    Request 继承体系      1.Tomcat需要解析请求数据,封装为request对象,并且创建request对象传递到service方法中   2.使用request对象,查阅javaEE ...

  4. for循环遍历的盗版笔记

    遍历一个List有如下几种方法   5 6 是 java8 增强for循环底层由Iterator实现 增强for的出现时替代迭代器的,所以在遍历集合或者遍历数组就可以使用增强for去完成 增强for循 ...

  5. 000 通过 Pytorch 实现 Transformer 框架完整代码(带注释)

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

  6. python中的时间处理

    python程序编写中的时间处理涉及三种: 1.时间的显示: 2.时间的转换: 3.时间的运算. 时间处理模块:time模块 时间的三种表示方式: ①时间戳,从1970年1月1日开始,每过1s增加1, ...

  7. SQL语法-列的新增、删除

    MySQL的语法: 新增列 ALTER TABLE `xxdb`.`xxtable` ADD COLUMN `xx_flag` varchar(1) NULL; 删除列 ALTER TABLE `xx ...

  8. 云原生爱好者周刊:Dapr 成为 CNCF 孵化项目

    云原生一周动态要闻: Dapr 加入 CNCF 孵化器 Knative 1.0 发布 Canonical 开始提供针对 Intel CPU 优化的 Ubuntu 图像 Longhorn 为 CNCF ...

  9. NCNN 模型推理详解及实战

    一,依赖库知识速学 aarch64 OpenMP AVX512 submodule apt upgrade 二,硬件基础知识速学 2.1,内存 2.2,CPU 三,ncnn 推理模型 3.1,shuf ...

  10. 实践出真知,小程序wepy,uni-app框架开发使用!

    一.前提 目前我只使用过wepy和uni-app框架开发过小程序,着重比较这两个框架使用感受! 另外wepy框架已经不维护了,希望uni-app好好维护下去! wepy和uni-app都是类似于vue ...