typescript 笔记

508 阅读2分钟

安装

全局安装

npm install typescript -g

安装完成之后 配置环境,然后查看是否安装成功

tsc -v

tsc --version

查看是否安装成功

创建项目

tsc --init

安装types/nodes包

npm install @types/node --dev-save

运行一个ts编译后的js文件

node hello.js

函数的定义

function search(age: number, name: string, pre: string = 'pre', stature?: string): string {
    console.log(stature)
    return '' + age + name;
}
var age: number = 18;
var name1: string = "xiaobai"
var search1 = search(age, name1);
console.log(search1)
​
​
​
function searchArgs(...args: any[]): string {
​
    let result: string = '';
    for (let i = 0; i < args.length; i++) {
        result += args[i];
    }
    return result;
}
console.log(searchArgs(1, 2, '小白', 3, 5, true, false, null))

函数定义

//函数声明法
function add(n1:number,n2:number):number {
    return  n1+n2;
}
console.log(add(1,2))
​
​
​
/*函数表达式*/
var add1 = function (n1:number,n2:number) {
    return  n1+n2;
}
console.log(add1(1,2))
​
​
​
// 箭头函数
var add2 = (n1:number,n2:number):number=>{
    return  n1+n2;
}
console.log(add2(1,2))

数组

let jspang = {
    name:"name",
    website:"baidu.com",
    age:18,
    say:function () {
        console.log('front')
    }
}
console.log(jspang.name);
jspang.say()
​
​
​
// array 数组
// let arr1:number[];
// let arr2:Array<string>;let arr1:number[] = [];
let arr2:number[] = [1,2,3,5,6];
​
let arr3:Array<string> = ["1","1","1","1",];
let arr4:Array<boolean> = [true,false,false,false];
​
let arr5:Array<string> = new Array("1","1","1","1",)
let arr6:Array<boolean> = new Array(true,false,false,false)
​
​
​
// 元祖
let x :[string,number]
x = ['hello',111]
​
​

class Demo11 {
​
    name: string;
    age: number;
​
    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }
​
    say() {
​
        console.log(this.name)
        console.log(this.age)
​
    }
​
​
}
​
​
let demo11 = new Demo11("xiaobai",20);
console.log(demo11);
demo11.say()
​

面向对象 - 类的修饰符

class Demo12 {
    public sex:string;
    protected name:string;
    protected age:number;
​
    public constructor(name:string,age:number,sex:string) {
        this.sex = sex;
        this.name = name;
        this.age = age;
    }
    public say(){
        console.log("hello")
    }
    protected love(){
        console.log("love")
    }
​
}
​
​
​
var demo12 = new Demo12("xiaobai",20,"girl");
​
demo12.say()
class Demo12 {
    // 只允许读
    public readonly sex:string = "girl";
}
var demo12 = new Demo12();
// demo12.sex()// 报错

类的继承和重写

class Demo13 {
​
​
    public name:string;
    public skill:string;
    public age:number;
    constructor(name:string,skill:string,age:number) {
        this.name = name;
        this.skill = skill;
        this.age = age;
    }
​
    inter(){
        console.log('inter')
    }
​
}
​
// var demo13 = new Demo13("name","skill",20);class Child  extends Demo13{
​
    public text:string ="goods";
​
    inter(){
        super.inter()
        console.log('child-inter')
    }
    public goods(){
        console.log("goods")
    }
​
}
​
var child = new Child("name","skill",20);
child.inter()
child.goods()
​

接口

interface Interf {
    sex:string;
    inter:string;
    maiBB?:Boolean; //可选
    
}
let interf:Interf = {
    sex:"girl",
    inter:"look book",
    maiBB:true,
}
​
console.log(interf)
interface Demo14 {
    (source:string,subString:string):boolean;
}
​
​
let demo:Demo14;
​
demo =function (source:string,subString:string):boolean{
    let flag = source.search(subString)
    return  (flag!=-1);
}
​
console.log(demo("啊,sfdaf,asfa","啊",));
​

命名空间

namespace Goods{
    export class Nice {
​
        public name:string ="xiaobai";
        say(){
            console.log("say")
        }
    }
​
}
namespace Goods1{
    export class Nice {
​
        public name:string ="xiaobai-Goods1";
        say(){
            console.log("Goods1-say")
        }
    }
​
}
​
​
var nice = new Goods.Nice();
console.log(nice)
​
var nice1 = new Goods1.Nice();
console.log(nice1)
​


\