首页 > 其他分享 >typescript

typescript

时间:2023-07-27 15:34:04浏览次数:30  
标签:typescript console string number let log name

原始数据类型包括:布尔值、数值、字符串以及 ES6 中的新类型Symbol和 ES10 中的新类型 BigInt

数组泛型

let list: Array<number> = [1, 2, 3];

 

任意类型

let list: any[] = ['itbaizhan', 10, {
website: 'https://xxx.com' }];

 

元组

let info: [string, number] = ['grb', 25]

 

使用元组的前提就是知道元素的数量和类型,这里顺序也是不能颠倒的

枚举

enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat}

 

联合类型

var age:number | string | boolean | [] = 20;

 

函数

TypeScript**定义函数**

function add(x:number, y:number):number {
    return x + y;
}

 

? 表示可选的参数

const add = (x:number, y:number,z?:number) =>
{
    return x + y
}
add(10,20)
add(10,20,30)

 

参数默认值

在 ES6 中,我们允许给函数的参数添加默认值,TypeScript 会将

添加了默认值的参数识别为可选参数

function info(name: string, age: number = 20)
{
    return name + age
}
info("grb")
info("grb",30)

 

ES6 中,可以使用 ...rest 的方式获取函数中的剩余参数(rest 参数)

function push(array:any[], ...items:any[]) {
    items.forEach(function(item) {
        array.push(item);
   });
    return array
}
let a: any[] = [];
const currentArray = push(a, 1, 2, 3);

 

重载

重载允许一个函数接受不同数量或类型的参数时,作出不同的处理

function reverse(x: number | string): number
| string | void {
    if (typeof x === 'number') {
        return
Number(x.toString().split('').reverse().join(
''));
   } else if (typeof x === 'string') {
        return
x.split('').reverse().join('');
   }
}

 

注解this的类型

function fancyDate(this:Date){
  return ${this.getDate()}/${this.getMonth()}/${this.getFullYear()}
}

 

生成器函数

function* createFibonacciGenerator() :IterableIterator<number>{
  let a=0
  let b=1
  while(true){
    yield a;
    [a,b]=[b,a+b]
  }
}

 

迭代器函数

let numbers={
  *[Symbol.iterator](){
    for(let n=1; n <=10 ;n++){
      yield n
    }
  }
}

 

public 任何地方都可访问

protected 可由当前类及其子类的实例访问

private 只可由当前类的实例访问

class Animal {
  move(distanceInMeters: number = 0) {
        console.log(`Animal moved
 ${distanceInMeters}m.`);
   }
 }
 class Dog extends Animal {
  bark() {
    console.log('Woof! Woof!');
   }
 
 }
 const dog = new Dog();
 dog.bark();
 dog.move(10);

 

super

在子类的构造方法中调用super(),把父子关系连接起来

class Animal{
  public name:string;
  
 constructor(name:string){
  this.name = name;
   }
  move(distanceInMeters:number){
  console.log(`${this.name} moved
 ${distanceInMeters}m.`);
   }
 }
 class Dog extends Animal{
  constructor(name:string){
  super(name)
   }
  drak(){
  console.log(this.name + " Woof!Woof!")
   }
 }
 class Snake extends Animal{
   constructor(name:string){
  super(name)
   }
  move(distanceInMeters: number): void {
  console.log(this.name + ":---" +
 distanceInMeters)
 
  super.move(distanceInMeters)
  }
  }
 
  const d = new Dog("dog")
  d.move(100)
  d.drak()
 
  const s = new Snake("蛇")
  s.move(1000)

 

存取器

TypeScript 支持通过 getters/setters 来截取对对象成员的访问。

它能帮助你有效的控制对对象成员的访问。

1 TypeScript版本问题:增加 tsconfig.json ,并配置

2 编译时版本问题: tsc hello.ts -t es5

const fullNameMaxLength = 10;
class Person {
    constructor() {
        this._fullname = 'aaa';
    }
    get fullName() {
        return this._fullname;
    }
    set fullName(newName) {
        if (newName && newName.length > fullNameMaxLength) {
            throw new Error("fullname" + fullNameMaxLength);
        }
        this._fullname = newName;
    }
}
let p = new Person();
p.fullName = 'it';
if (p.fullName) {
    console.log(p.fullName)
}

 

使用 static 修饰符修饰的方法称为静态方法,它们不需要实例化,而是直接通过类来调用

实例方法

class Person{
  public name:string;
  constructor(name:string){
    this.name=name
  }
  sayhello(){
    console.log(`${this.name}`)
  }
}
const p=new Person("it")
p.sayhello()

 

静态方法

class Person{
  public name:string
  constructor(name:string){
    this.name=name
  }
  sayhello(){
    console.log(`${this.name}`)
  }
  static sayhi(){
    console.log("hi")
  }
}
Person.sayhi()

 

接口

function printLabel(label) {
    console.log(label.label);
}
var myobj = {
    label: "size 10 object"
};
printLabel(myobj);

 

接口可选属性(加上?

标签:typescript,console,string,number,let,log,name
From: https://www.cnblogs.com/guorunbin/p/17585092.html

相关文章

  • TypeScript小知识:遍历enum (暂时记录)
    enumBlockPrefab{  BLOCK2=0,  BLOCK4,  BLOCK8,  BLOCK16,  BLOCK32,  BLOCK64,  BLOCK128,  BLOCK256,  BLOCK512,  BLOCK1024,  BLOCK2048}letnum=BlockPrefab.BLOCK128;letsmth=BlockPrefab[num];let......
  • 关于TypeScript中提示xxx is declared but its value is never read的解决方法
    首先,提示很明显,是定义了变量,但是却没有使用。解决方案有如下两种: 一:需要确定变量是否真的没有使用到,如果没有使用直接删除即可。 二:对于方法中的入参,是没法随便删除的。这时候我们可以利用TypeScript4.2中的新特性,将变量名用下划线开头,表示占位变量。更具体的详情可......
  • typescripts学习笔记(三)
    typescripts学习笔记(三)-实现过程引言Typescript是一种由微软开发的开源编程语言,它是JavaScript的超集,可以在任何支持JavaScript的环境中运行。本篇文章将教你如何使用Typescript来创建一个简单的学习笔记应用。整体流程下面是整个实现过程的流程图:步骤描述步骤1......
  • typescriptfunction
    如何实现"typescriptfunction"整体流程为了实现"typescriptfunction",我们需要经历以下几个步骤:步骤描述步骤一安装TypeScript步骤二创建项目文件夹步骤三初始化TypeScript配置步骤四编写TypeScript代码步骤五编译TypeScript代码步骤六运行TypeScr......
  • Typescript:基础语法学习(尚硅谷 李立超)
    官方文档:https://www.tslang.cn/docs/handbook/typescript-in-5-minutes.html搭建开发环境npmi-gtypescript安装完成界面:查看是否安装完成,输入以下命令:tsc执行命令:node文件名``编译代码tsc01_HelloTs.ts基础语法变量声明//生命一个变量a,同时指定他的类型为number......
  • TypeScript的深拷贝与浅拷贝
    今天在开发过程中遇到深拷贝与浅拷贝的问题constuserData1:number[][]=this.dataMangager.getUserDataMap();该行代码中的userData1 是一个指向 this.dataMangager.getUserDataMap() 返回的二维数组的引用。当 this.dataMangager.getUserDataMap() 返回的二维数组......
  • TypeScript中的keyof和in
    keyof使用keyof操作符接受一个对象类型作为参数,返回该对象属性名组成的字面量联合typeDog={name:string;age:number;};typeD=keyofDog;//typeD="name"|"age"可以看到keyofany返回的是一个联合类型:string|number|symbol,结合前文说到keyof是为了取得......
  • TypeScript 学习笔记
    什么是TypeScript?TypeScript是JavaScript的一个超集,支持ECMAScript6标准,它可以编译成纯javaScript,可以运行在任何浏览器上。安装TypeScriptnpminstall-gtypescript安装完成后我们可以使用tsc命令来执行TypeScript的相关代码tsc-vVersion5.1.6新建一个a......
  • 58.请使用vue3+vite+typescript+element-plus+setup语法糖,使用xlsx和file-saver实现保
    1<template>2<div>3<el-table4:data="mergedTableData"5border6stripe7>8<!--表头-->9<el-table-column10prop="date"11label="......
  • [Typescript] Queue
    UsingLinkedlisttoimplementaQueue.Injavascript,ifyouwanttopushaiteminfrontofanArray,itneedtoshifttherestofitems,notgoodforperformance.UsingLinkedListisO(1)oeprationforenqueanddeque, whichisbetter.Usecase:Let&#......