TypeScript 2.7 - [ 1小时快速入门]

TypeScript 2.7 快速入门指南
本文档涵盖了TypeScript 2.7的基本数据类型,包括基本结构类型和函数类型,深入讲解了lambdas、this关键字、重载、类的创建、继承和访问修饰符,同时探讨了封装和static的使用技巧。

基本数据类型

基本数据类型

 - boolean,number,string,any,void

基本结构类型

 - Array,enum

这里写图片描述

TS函数类型

  • 函数类型声明

    function add(x: number, y: number): number {
        return x + y;
    }
    
    var myAdd = function (x: number, y: string): string {
        return "hello ts"
    }
    // 函数参数的意义:  看下图详解
    var myAddts: (name: string, age: number) => number = function (n: string, a: number): number {
        return a;
    };

    这里写图片描述

  • 可选参数

function buikdName(first: string, last?: string) {
    return first + "" + last;
}

var result1 = buikdName("hello", "world");
var result2 = buikdName("你好");

console.log(result1)//helloworld
console.log(result2)//你好undefined
  • 默认参数
function build(first:string,last="hello"){
    return first+""+last;
}
var result1 = build("hello", "world");
var result2 = build("你好");

console.log(result1)//helloworld
console.log(result2)//你好hello
  • 可变参数
    这里写图片描述

lambads和this关键字

// lambads可千万不能理解成ES6里的钩子函数.函数语法意思截然不同
var man={
    name:["h","e",1,false],
    getName:function () {
        return ()=>{
            var i=Math.floor(Math.random()*4)
            return {
                n:this.name[i]
            }
        }
    }
}
var myName=man.getName();
console.log(myName().n);

重载

function attr(name:string):string;
function attr(age:number):number;

function attr(nameorage:any):any{
    if(nameorage && typeof nameorage==="string"){
        console.log("name")
    }else {
        console.log("age")
    }
}

attr("nihao");
attr(11);

类Class

类的创建

class Person {
    name: string;
    age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    print() {
        return this.name + ":" + this.age;
    }
}
var p=new Person('ime',18);
console.log(p.print())

类的继承

class Person {
    name: string;
    age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    tell() {
        return this.name + ":" + this.age;
    }
}

class Student extends Person {
    school: string;

    constructor(name: string, age: number, school: string) {
        super(name, age);
        this.school = school;
    }

    tell() {
        return this.name + ":" + this.age + ":" + this.school;
    }
}

var s = new Student("deng",8,"##区小学");
console.log(s.tell())

访问修饰符

//public private

class People {
    private _name: string;
    private _age: number;

    get name(): string {
        return this._name;
    }

    set name(value: string) {
        this._name = value;
    }

    get age(): number {
        return this._age;
    }

    set age(value: number) {
        this._age = value;
    }

    print() {
        return `${this._name}:${this._age}`
    }

    constructor(name: string, age: number) {
        this._name = name;
        this._age = age;
    }
}

class Teacher extends People {
    school: string;

    constructor(name: string, age: number, school: string) {
        super(name, age);
        this.school = school;
    }

    print() {
        return `${this.name}:${this.age}:${this.school}`
    }
}

var p = new Teacher("chenjing", 19, "xiaoxue");
console.log(p.print());

封装

class Hello {
    private _name: string;

    get name(): string {
        return this._name;
    }

    set name(value: string) {
        this._name = value;
    }

    toString() {
        return this._name;
    }
}
var h=new Hello();
h.name="chenjing";
console.log(h.toString());

static和使用技巧

//TODO:我本来Person name 但是会报错.所以修改了变量名字;
// 这可能是和TS语法机制有关
class Person1 {
    static name1: string;

    toString() {
        console.log(`名字:${Person1.name1}`)
    }
}

var pp = new Person1();
Person1.name1 = 'chenjing';
pp.toString()
class Greeter{
    greetering:string;

    constructor(greetering: string) {
        this.greetering = greetering;
    }
    greet(){
        return `hello${this.greetering}`
    }
}
// 声明引用的数据类型;
var green:Greeter;
green=new Greeter('chenjing');
console.log(green.greet())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值