typescript学习

作者: 来一罐可乐 | 来源:发表于2019-07-02 17:12 被阅读0次

关于typescript的计算器小栗子:

class calculator {
  public np1: string = '';
  public np2: string = '';
  public transfer: string = '';
  public result: string = '';
  public content: HTMLElement;
  public resultArea: HTMLElement;
  public resultAreaSpan: HTMLSpanElement;
  public buttonLists: Array<Array<number | string>> = [
    ['clear', '÷'],
    [7, 8, 9, '×'],
    [4, 5, 6, '-'],
    [1, 2, 3, '+'],
    [0, '='],
  ];
  public width: string = '100%';
  public height: string = '60px';

  constructor() {
    this.createContent();
    this.createResultArea();
    this.createButtons()
    this.bindEvents()
  }

  createContent() {
    let content = document.createElement('div');
    content.classList.add('content');
    content.style.width = this.width
    document.body.appendChild(content);
    this.content = content
  }

  createResultArea() {
    let resultArea = document.createElement('div')
    resultArea.classList.add('resultArea')
    resultArea.style.width = this.width
    resultArea.style.height = this.height

    let span = document.createElement('span')
    span.textContent = '0'
    this.resultAreaSpan = span
    resultArea.appendChild(span)
    this.content.appendChild(resultArea)
  }

  createButtons() {
    this.buttonLists.forEach((buttonList: Array<string | number>) => {
      let div = document.createElement('div');
      div.classList.add('row');
      buttonList.forEach((text: string | number) => {
        let button = document.createElement('button')
        button.classList.add(`button_${text}`)
        button.textContent = text.toString()
        div.appendChild(button)
      })
      this.content.appendChild(div)
    })
  }

  bindEvents() {
    this.content.addEventListener('click', () => {
      let e = event.target
      if (e instanceof HTMLButtonElement) {
        const buttonContext: string = e.textContent
        const numberStr: string = '0123456789'
        const operatorStr: string = '+-×÷'

        if (numberStr.indexOf(buttonContext) > -1) {
          if (this.transfer) {
            this.np2 += buttonContext;
            this.resultAreaSpan.textContent = this.np2;
          } else {
            // this.result = '';
            this.np1 += buttonContext;
            this.resultAreaSpan.textContent = this.np1;
          }
        } else if (operatorStr.indexOf(buttonContext) > -1) {
          if (this.result) {
            this.np1 = this.result;
            this.result = '';
          }
          this.transfer = buttonContext;
        } else if ('='.indexOf(buttonContext) > -1) {
          if (this.np1!='' && this.np2!='') {
            this.result = this.getResult().toString()
            this.resultAreaSpan.textContent = this.result
            this.np1 = '';
            this.np2 = '';
            this.transfer = '';
          } else {
            this.clear()
          }
        } else {
          this.clear()
        }


      }
    })
  }

  clear() {
    this.np1 = '';
    this.np2 = '';
    this.transfer = '';
    this.result = '';
    this.resultAreaSpan.textContent = '0';
  }
  getResult() {
    let numberOne: number = parseFloat(this.np1);
    let numberTwo: number = parseFloat(this.np2);

    if (this.transfer === '+') {
      return (numberOne + numberTwo)
    } else if (this.transfer === '-') {
      return (numberOne - numberTwo)
    } else if (this.transfer === '×') {
      return (numberOne * numberTwo)
    } else if (this.transfer === '÷') {
      if (numberTwo === 0) {
        return false;
      } else {
        return (numberOne / numberTwo)
      }
    }

  }

}

new calculator()

相关文章

  • Typescript

    TypeScript(TS)部分 TypeScript学习笔记

  • typescript学习

    typescript学习

  • TypeScript入门教程(一)

    学习网址:文档简介 · TypeScript中文网 一、Typescript介绍 1. TypeScript 是由...

  • typescript

    title: typescript学习tags: typescript学习 [toc] 泛型 基本使用 两种使用方...

  • TypeScript 基础

    以下为学习极客时间 《TypeScript 开发实战》的学习记录。 TypeScript 环境配置 安装 ts: ...

  • Typescript 学习笔记六:接口

    目录: Typescript 学习笔记一:介绍、安装、编译 Typescript 学习笔记二:数据类型 Types...

  • TypeScriptz学习笔记

    TypeScriptz学习笔记 标签(空格分隔): TypeScript 撩课学院 安装TypeScript Ty...

  • Typescript

    学习笔记 菜鸟教程 《菜鸟教程》-TypeScript简介 《菜鸟教程》-TypeScript安装 《菜鸟教程》-...

  • React+TypeScript开发--环境搭建

    React+TypeScript开发--环境搭建 学习文档 React TypeScript 一、node环境安装...

  • TypeScript介绍与安装

    本节我们来学习 TypeScript 语言。 TypeScript 看名字就和 JavaScript 很像,事实上...

网友评论

    本文标题:typescript学习

    本文链接:https://www.haomeiwen.com/subject/yssthctx.html