首页 > 其他分享 >typeScript 内置对象(八)

typeScript 内置对象(八)

时间:2024-11-21 15:46:53浏览次数:1  
标签:canvas 内置 console log 对象 typeScript let HTMLElement new

JavaScript 中有很多内置对象,它们可以直接在 TypeScript 中当做定义好了的类型。

ECMAScript 的内置对象

Boolean、Number、stringRegExpDateError

let b: Boolean = new Boolean(1)
console.log(b)
let g: Number = new Number(true)
console.log(g)
let s: String = new String('dsahfgshjdfgsh')
console.log(s)
let d: Date = new Date()
console.log(d)
let r: RegExp = /^1/
console.log(r)
let e: Error = new Error("error!")
console.log(e)

DOM 和 BOM 的内置对象

DocumentHTMLElementEventNodeList 等

let body: HTMLElement = document.body;
let allDiv: NodeList = document.querySelectorAll('div');
//读取div 这种需要类型断言 或者加个判断应为读不到返回null
let div: HTMLElement = document.querySelector('div') as HTMLDivElement
document.addEventListener('click', function (e: MouseEvent) {

});
//dom元素的映射表
interface HTMLElementTagNameMap {
    "a": HTMLAnchorElement;
    "abbr": HTMLElement;
    "address": HTMLElement;
    "applet": HTMLAppletElement;
    "area": HTMLAreaElement;
    "article": HTMLElement;
    "aside": HTMLElement;
    "audio": HTMLAudioElement;
    "b": HTMLElement;
    "base": HTMLBaseElement;
    "bdi": HTMLElement;
    "bdo": HTMLElement;
    "blockquote": HTMLQuoteElement;
    "body": HTMLBodyElement;
    "br": HTMLBRElement;
    "button": HTMLButtonElement;
    "canvas": HTMLCanvasElement;
    "caption": HTMLTableCaptionElement;
    "cite": HTMLElement;
    "code": HTMLElement;
    "col": HTMLTableColElement;
    "colgroup": HTMLTableColElement;
    "data": HTMLDataElement;
    "datalist": HTMLDataListElement;
    "dd": HTMLElement;
    "del": HTMLModElement;
    "details": HTMLDetailsElement;
    "dfn": HTMLElement;
    "dialog": HTMLDialogElement;
    "dir": HTMLDirectoryElement;
    "div": HTMLDivElement;
    "dl": HTMLDListElement;
    "dt": HTMLElement;
    "em": HTMLElement;
    "embed": HTMLEmbedElement;
    "fieldset": HTMLFieldSetElement;
    "figcaption": HTMLElement;
    "figure": HTMLElement;
    "font": HTMLFontElement;
    "footer": HTMLElement;
    "form": HTMLFormElement;
    "frame": HTMLFrameElement;
    "frameset": HTMLFrameSetElement;
    "h1": HTMLHeadingElement;
    "h2": HTMLHeadingElement;
    "h3": HTMLHeadingElement;
    "h4": HTMLHeadingElement;
    "h5": HTMLHeadingElement;
    "h6": HTMLHeadingElement;
    "head": HTMLHeadElement;
    "header": HTMLElement;
    "hgroup": HTMLElement;
    "hr": HTMLHRElement;
    "html": HTMLHtmlElement;
    "i": HTMLElement;
    "iframe": HTMLIFrameElement;
    "img": HTMLImageElement;
    "input": HTMLInputElement;
    "ins": HTMLModElement;
    "kbd": HTMLElement;
    "label": HTMLLabelElement;
    "legend": HTMLLegendElement;
    "li": HTMLLIElement;
    "link": HTMLLinkElement;
    "main": HTMLElement;
    "map": HTMLMapElement;
    "mark": HTMLElement;
    "marquee": HTMLMarqueeElement;
    "menu": HTMLMenuElement;
    "meta": HTMLMetaElement;
    "meter": HTMLMeterElement;
    "nav": HTMLElement;
    "noscript": HTMLElement;
    "object": HTMLObjectElement;
    "ol": HTMLOListElement;
    "optgroup": HTMLOptGroupElement;
    "option": HTMLOptionElement;
    "output": HTMLOutputElement;
    "p": HTMLParagraphElement;
    "param": HTMLParamElement;
    "picture": HTMLPictureElement;
    "pre": HTMLPreElement;
    "progress": HTMLProgressElement;
    "q": HTMLQuoteElement;
    "rp": HTMLElement;
    "rt": HTMLElement;
    "ruby": HTMLElement;
    "s": HTMLElement;
    "samp": HTMLElement;
    "script": HTMLScriptElement;
    "section": HTMLElement;
    "select": HTMLSelectElement;
    "slot": HTMLSlotElement;
    "small": HTMLElement;
    "source": HTMLSourceElement;
    "span": HTMLSpanElement;
    "strong": HTMLElement;
    "style": HTMLStyleElement;
    "sub": HTMLElement;
    "summary": HTMLElement;
    "sup": HTMLElement;
    "table": HTMLTableElement;
    "tbody": HTMLTableSectionElement;
    "td": HTMLTableDataCellElement;
    "template": HTMLTemplateElement;
    "textarea": HTMLTextAreaElement;
    "tfoot": HTMLTableSectionElement;
    "th": HTMLTableHeaderCellElement;
    "thead": HTMLTableSectionElement;
    "time": HTMLTimeElement;
    "title": HTMLTitleElement;
    "tr": HTMLTableRowElement;
    "track": HTMLTrackElement;
    "u": HTMLElement;
    "ul": HTMLUListElement;
    "var": HTMLElement;
    "video": HTMLVideoElement;
    "wbr": HTMLElement;
}

定义Promise

如果我们不指定返回的类型TS是推断不出来返回的是什么类型

 但是如果我们明确了一个类型,那么ts就可以推断出来

 

 函数定义返回promise 语法规则: Promise < T > 类型

const testPro = ():Promise<number>=>{
    return new Promise<number>((resolve, reject) => {
        resolve(2222)
    })
}

当你在使用一些常用的方法的时候,TypeScript 实际上已经帮你做了很多类型判断的工作了

而他们的定义文件,则在 TypeScript 核心库的定义文件

 参考案例(代码雨效果-参考)

let canvas = document.querySelector('#canvas') as HTMLCanvasElement
let ctx = canvas.getContext('2d') as CanvasRenderingContext2D
canvas.height = screen.availHeight; //可视区域的高度
canvas.width = screen.availWidth; //可视区域的宽度
let str: string[] = 'XMZSWSSBXMZSWSSBXMZSWSSBXMZSWSSBXMZSWSSB'.split('')
let Arr = Array(Math.ceil(canvas.width / 10)).fill(0) //获取宽度例如1920 / 10 192
console.log(Arr);

const rain = () => {
    ctx.fillStyle = 'rgba(0,0,0,0.05)'//填充背景颜色
    ctx.fillRect(0, 0, canvas.width, canvas.height)//背景
    ctx.fillStyle = "#0f0"; //文字颜色
    Arr.forEach((item, index) => {
        ctx.fillText(str[Math.floor(Math.random() * str.length)], index * 10, item + 10)
        Arr[index] = item >= canvas.height || item > 10000 * Math.random() ? 0 : item + 10; //添加随机数让字符随机出现不至于那么平整
    })
    console.log(Arr);

}
setInterval(rain, 40)

 

 下一节学习typeScript 类定义

标签:canvas,内置,console,log,对象,typeScript,let,HTMLElement,new
From: https://www.cnblogs.com/shizhouyu/p/18560942

相关文章

  • typeScript 类型断言、联合类型和交叉类型(七)
    首先介绍联合类型lettestStr:number|string='1111111'//函数使用联合类型constfn=function(name:string|number):number{return1111} 那么什么是交叉类型呢多种类型的集合,联合对象将具有所联合类型的所有成员 interfaceperson{name:......
  • typeScript 数组类型(五)
    typeScript数组类型声明分默认数组类型和数组泛型声明,下面一一介绍基础数组类型声明//声明数组类型全数字类型letarr:number[]=[1,2,4,5,7]//这么写会报错的不可以指定字符串类型作为数组的值letarr1:number[]=[1,2,3,4,'23323']//解决上面的类型......
  • typeScript 基础类型 (三)
    typeScript的基础类型包含 Boolean、Number、String、null、undefined 以及 ES6 的  Symbol 和 ES10 的 BigInt。下面介绍每种类型的使用和规则一、字符串类型介绍 //普通的字符串声明方式letstr:string='momo~ssds'//也可以使用模版字符串letstr1:str......
  • c++引用传参是否能完全避免临时对象?
    我们都知道引用和指针传递是为了避免传参产生临时对象 今天我在温习模板特化的时候发现引用传参也可能会产生临时对象所以我较了下面函数传参6种情况A&  constA&  A*  constA*  A*&  constA*& 这些情况是否会有临时对象1.const type*&#include<......
  • 从零开始的Python世界生活——内置模块(Math)
    从零开始的Python世界生活——内置模块(Math)Python的math模块提供了丰富的数学函数和常数,支持基本的数学运算、三角函数、对数、指数等,适用于科学计算和工程应用。数学常量:注意math模块的常量是以双精度浮点数存储的,所以通常只有15到17位有效数字的精度,如果需要更高的精度推......
  • three.js获取点击的对象及坐标
    //监听鼠标点击事件document.addEventListener('click',function(event){//创建一个射线投射器varraycaster=newTHREE.Raycaster();//鼠标位置varmouse=newTHREE.V......
  • 面对对象程序设计题目集总结(二)
    前言关于此次题目集     这次的题目集包含了两种大作业类型:第一种是之前答题判题程序的延续,第二种则是新的家居强电电路模拟程序。第一种大作业发布时,我们并未学习继承和多态等面向对象的相关知识,因此最初的代码编写仅依赖于简单的语法。但是随着题目的逐步迭代,第四次作......
  • C++(构造函数和创建类对象)
    一)构造函数的概念构造函数是一种特殊的成员函数,用于在创建对象时初始化对象的数据成员。它的主要目的是确保对象在使用前被正确地初始化,使得对象处于一个合理的初始状态。构造函数的名称与类名相同,没有返回类型(包括void)。例如,对于一个名为MyClass的类,其构造函数可以写成MyClass()......
  • 【Java】对象和JSON字符串之间的转换 全网最清晰!
    在Java中,将对象转换为JSON字符串通常使用一些流行的JSON库,如Jackson或Gson。这两个库都非常强大,支持将Java对象转换为JSON字符串,也支持反向操作。接下来我会介绍一个基于Jackson的工具类,它可以非常方便地实现Java对象和 JSON字符串之间的相互转换。1.引......
  • 前端两大利器:Vue与TypeScript的渊源
    Vue在前端领域占据着重要地位,是最受欢迎的前端框架之一。它被广泛应用于各种类型的Web应用开发,从简单的小型项目,如个人博客、公司宣传网站等,到复杂的大型企业级应用,如电商平台、金融系统等。例如,许多电商公司使用Vue来构建商品展示、购物车、用户订单管理等功能模块,为......