typescript ≈ javascript plus
🔗setup
npm install typescript -g
tsc -version
npm install ts-node -g
🖌️hello world
let str = "hi"
console.log(str);
ts-node t.ts
🖋️datatype
let a1 :string ='abc'
let a2:number = 2
let a3 :boolean =true
let nu:null =null
let un:undefined = undefined
let a4:string|null = null
let a5:1|2|3 = 2
any
let a:any
a= 1
a="1"
a=true
strong type
let a:string = "123"
a=1
Err
let a:unknown
a= 1
a="1"
a=true
let b :String
if(typeof a =="string")
{
b=a
}
enum 枚举
enum Color { RED,BLUE,BLACK}
let color = Color.BLACK; //Color[2]
console.log(color);
ts-node t.ts
or to js
tsc t.ts
to see t.js
Array
let arr :number[] = [1,2,3]
let arr2 :Array<string> = ['a','b']
元组
let arr:[String,number,boolean] =["123",1,true]
let a1 :[number,string,number?] = [1,"11"]
🖊️function
function myFn(a:number,b:string,c?:boolean,...rest:number[]) :number
{
return 100
}
const f = myFn(10,'123',true,1,2,3)
✒️interface
interface Obj{
name :string,
age:number
}
const obj:Obj={
name:'a',
age:15
}
📏type
let a: String |number = 10
type myname = string |number
let b:myname = 10
let b2:myname = "10"
📐T 泛型
function myFn<T>(a:T,b:T):T[]{
return [a,b]
}
myFn<number>(1,2)
myFn('a','b')
📎extends
interface Parent{
p1 :string
p2:number
}
interface Child extends Parent
{
p3:string
}
const v1 :Child=
{
p1 :"123",
p2:1,
p3:"12"
}
🔧class
class Article
{
public title:string
con:string
temp1?:string
tempnum= 100
private temp2 ?:string
protected temp3?:string
static a1 :string
static readonly a2 :string ='a2st'
constructor (title:string,con:string)
{
this.title=title
this.con=con
}
}
const a1 =new Article('t1','con1')
class B extends Article
{
constructor (title:string ,con:string)
{
super(title,con)
this.temp3="1"
}
}
class User{
private _password :string =''
get password():string{
return '****'
}
set password (newPass:string)
{
this._password = newPass
}
}
const u1 = new User()
console.log(u1.password)
🪛abstract
abstract class Animal{
abstract name:string
abstract makeSound():void
move():void
{
console.log('mmm')
}
}
class Cat extends Animal{
name:string='miao'
makeSound(): void {
console.log("miaomiao")
}
}
class Dog extends Animal{
name:string='wang'
makeSound(): void {
console.log("wangwang")
}
}
🧲implements
interface Animal{
name:string
get sound():string
makesound():void
}
interface AgeI{
age:number
}
class Dog implements Animal,AgeI{
name: string = 'wang'
age:number = 2
get sound(){
return ''
}
makesound(): void {
}
}