typescript语法讲解都写在这里了,通过注释就能看懂ts到底怎么使用,代码从上往下看,知识点都是由易到难
“写文案讲解代码真的很累不如直接手撸来得快,今天偷懒通过注释的形式讲解看不懂的地方多看两遍就懂”
let num: number = 0
let str: string = '123'
let bol: boolean = true
let all: any = false
let angle: number | string;
angle = "123";
angle = 123;
let numer: number[] = [13,1,2,1]
let objArr: object[] = [{name: 123}, {name: 254}]
objArr.push({name: '123'})
let arr: [number] = [1]
let oArr: [number , string] = [123, "123"]
interface person {
name: string;
age: number;
address ?: string;
readonly mail: string;
}
let mine: person = {
name: 'frank',
age: 23,
mail: '123@qq.com',
}
const add = (x: number = 1,y:number, z?:number): number => {
if(typeof z === 'number') {
return x + y + z
} else {
return x + y
}
}
const add2: (x:number, y:number ,z: number) => number = add
const add3: (x:number, y:number) => number = add
class Animal {
name: string;
constructor (name: string) {
this.name = name
}
run () {
return `${this.name} 在奔跑`
}
}
const snake = new Animal('蛇')
class Dog extends Animal {
bark () {
return `${this.name} is barking`
}
}
const xiaogou = new Dog('bob')
console.log(xiaogou.run())
console.log(xiaogou.bark())
class Cat extends Animal {
constructor(name: string) {
super(name)
console.log(this.name)
}
run () {
return `猫咪, 在玩耍` + super.run ()
}
static stateFun () {
return '静态属性'
}
}
const maomao = new Cat('maomao')
console.log(maomao.run())
console.log(Cat.stateFun())
interface Radio {
switchRadio (triggerL: boolean): void;
}
interface RadioWithBatter extends Radio {
checkBatterStatus(): void;
}
class Car implements Radio{
switchRadio () {
}
}
class Cellphone implements RadioWithBatter {
switchRadio () {
}
checkBatterStatus() {
}
}
enum Direction {
one = 0,
two = 1,
three = 2,
four = 3
}
console.log(Direction[3])
console.log(Direction.one)
const value = 2
if(value === Direction.three) {
console.log('bingo')
}
function echo <T> (arg: T): T {
return arg
}
const result1 = echo('123')
const result2 = echo(123)
function swap <T, U>(tuple: [T, U]): [U, T] {
return [tuple[1] , tuple[0]]
}
const result3 = swap(['ts', 'hello'])
console.log(result3.join(','));
interface IWidthLength {
length: number
}
function echoWidthLength<T extends IWidthLength>(arg: T): T {
return arg
}
const strFun = echoWidthLength('str')
const objFun = echoWidthLength({length: 1, a: 2})
const arrFun = echoWidthLength([1,2,3])
interface KeyPair<T, U> {
key: T;
value: U
}
let kp1: KeyPair<number , string> = {
key: 1,
value: '123'
}
interface funPair<T> {
(x: T, y: T): T
}
function plus (x: number , y: number): number {
return x + y
}
function strPlus (val: string): string {
return `hello, ${val}`
}
const aBtn: funPair<number> = plus
const strBtn: funPair<string> = strPlus
type PlusType = (x: number , y : number) => number
function sum(x:number , y: number): number {
return x + y
}
const sum2: PlusType = sum
type NameResolver = () => string
type strNum = string | number
function strNumFun(val: strNum): number {
if(typeof val === 'string') {
return val.length
} else {
return val
}
}
function getLength(input: string | number): number {
if((<string>input).length) {
return ((<string>input).length)
} else {
return input.toString().length
}
}
|