1. TypeScript 的介绍
- 完整教程TypeScript 入门教程
- TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准,由微软开发的自由和开源的编程语言
- 通俗的说,TypeScript 在 JavaScript 的基础上添加了类型支持,可以在代码编写阶段就发现代码的错误
- 浏览器本身不支持直接运行 TypeScript 代码,需要将其编译成 JavaScript 代码
- TypeScript 代码的语法更为严格,因此会引申出一系列相关语法(全局变量声明,可选)
- 在编译的 TypeScript 代码过程中,会展示错误信息会并移除 TypeScript 的相关代码,只保留原始的js代码
- 总的来说,TypeScript 可以帮助程序员在代码编写的阶段提早发现其代码错误,但是 TypeScript 本身需要一系列的声明才能正常工作,这些声明的语法也带来了一定的学习成本
2.编译 TypeScript 的工具包(VScode)
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
var y : null = null
var z : undefined = undefined
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.多类型与类型别名
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"
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类
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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通