变量声明
let msg: string = 'hello world'
let:声明变量的关键字,const则代表常量。
msg:变量名,自定义。
string:变量的数据类型。
let msg: string = 'hello world'
let age: number = 21
let finished: boolean = true
let a: any = 'jack'//any:不确定类型,可以是任意类型。
a = 21
let u: string|number|boolean = 'rose'//union:联合类型,可以是多个指定类型中的一种。
u = 18
let p {name: 'Jack', age: 21}//Object:对象
console.log(p.name)
console.log(p['name'])
let names: Array<string> = ['Jack', 'Rose']//Array:数组,元素可以是任意其它类型。
let ages: number[] = [21, 18]
console.log(name[0])
条件控制
TypeScript支持基于if-else和switch的条件控制,在TypeScript中,空字符串、数字0、null、undefined都被认为是false,其它值则为true.
let num: number = 21
if(num % 2 === 0){
console.log(num + '是偶数')
}else{
console.log(num + '是奇数')
}
if(num > 0){
console.log(num + '是正数')
}else if(num < 0){
console.log(num + '是负数')
}else{
console.log(num + '为0')
}
if(num){
//num非空,可以执行逻辑。
}
let grade: string = 'A'
switch(grade){
case'A'{
console.log('优秀')
break
}
case'B'{
console.log('合格')
break
}
default:{
console.log('非法输入')
break
}
}
循环迭代
TypeScript支持for和while循环,并且为一些内置类型如Array等提供了快捷迭代语法。
//普通for
for(let i = 1; i <= 10; i++){
console.log('点赞' + i + '次')
}
//while
let i = 1;
while(i <= 10){
console.log('点赞' + i + '次')
}
//定义数组
let names: string[] = ['Jack', 'Rose']
//for in 迭代器,遍历得到数组角标
for(const i in names){
console.log(i + ':' + names[i])
}
//for of 迭代器,直接得到元素
for(const name of names){
console.log(name)
}
函数
TypeScript通常利用function关键字声明函数,并且支持可选参数、默认参数、箭头函数等特殊语法。
//无返回值函数,返回值void可以省略
function sayHello(name: string): void{
console.log('你好,' + name + '!')
}
sayHello('Jack')
//有返回值函数
function sum(x: number, y: number): number{
return x + y
}
let result = sum(21, 18)
//箭头函数
let sayHi = (name: string) =>{
console.log('你好,' + name + '!')
}
sayHi('Rose')
//可选参数,在参数名后加?,表示参数是可选的
function sayHello(name?: string){
//判断name是否有值,如果无值则给一个默认值
name = name ? name : '陌生人'
console.log('你好,' + name + '!')
}
sayHello('Jack')
sayHello()
//参数默认值,在参数后面赋值,表示参数默认值
//如果调用者没有传参,则使用默认值
function sayHello(name: string = '陌生人'){
console.log('你好,' + name + '!')
}
sayHello('Jack')
sayHello()
类和接口
TypeScript具备面向对象编程基本语法,例如interface、class、enum等。也具备封装、继承、多态等面向对象基本特征。
//定义枚举
enum Msg{
HI = 'Hi',
HELLO = 'Hello'
}
//定义接口,抽象方法接收枚举参数
interface A{
say(msg: Msg): void
}
//实现接口
class B implements A{
say(msg: Msg): void{
console.log(msg + ', I am B')
}
}
//初始化对象
let a:A = new B()
//调用方法,传递枚举参数
a.say(Msg.Hi)
//定义矩形类
class Rectangle{
//成员变量
private width: number
private length: number
//构造函数
constructor(width: number, length: number) {
this.width = width
this.length = length
}
//成员方法
public area(): number{
return this.width * this.length
}
}
//定义正方形
class Squaere extends Rectangle{
constructor(side: number){
//调用父类构造
super(side, side)
}
}
let s = new Square(10)
console.log('正方形面积为:' + s.arrea() )
模块开发
应用复杂时,可以把通用功能抽取到单独的ts文件中,每个文件都是一个模块,模块可以相互加载,提高代码复用性。