当前位置: 首页 > news >正文

8.ts_内置对象代码雨

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

1. ECMAScript 的内置对象: Number Date RegExp Error XMLHttpRequest

letnum:Number=newNumber(1)letdate:Date=newDate()letreg:RegExp=newRegExp(/\w/)leterr:Error=newError('错了')letxhr:XMLHttpRequest=newXMLHttpRequest()

2. DOM 和 BOM 的内置对象:Document、HTMLElement、Event、NodeList 等

2.1. DOM内置对象:Document、HTMLElement、Event、NodeList
// 2. dom querySelector querySelectorAll// 2.1 querySelector// 2.1.1. HTML(元素名称)Element HTMLElement(毫无特殊的一些标签) Elementletdiv:HTMLDivElement=document.querySelector('div')letinput:HTMLInputElement=document.querySelector('input')letcanvas:HTMLCanvasElement=document.querySelector('canvas')letsection:HTMLElement=document.querySelector('section')letheader:HTMLElement=document.querySelector('header')letfooter=document.querySelector('footer')asElement// 直接断言成Element也是可以的console.log(div,input,canvas,section,header,footer)// 2.2. querySelectorAllletdivList:NodeList=document.querySelectorAll('div footer ')// document.querySelectorAll('div')元素是动态的,使用NodeListOf<类型1 | 类型2 | ...>letdivList:NodeListOf<HTMLDivElement|HTMLElement>=document.querySelectorAll('div')// divList.forEachconsole.log(divList)//dom元素的映射表interfaceHTMLElementTagNameMap{"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;}
2.2. BOM 的内置对象:promise localStorage location cookie
// 3. bom promise localStorage location cookieletlocal:Storage=localStorageletlo:Location=locationletpromise:Promise<number>=newPromise((r)=>r(123))letpromise1:Promise<string>=newPromise((r)=>r('小满'))letcookie:string=document.cookie console.log(cookie)promise.then(res=>{// res: 推断出来是number类型了// res.toFixed number类型的方法console.log(res)})local.setItem('name','小满')

3. 案例: 代码雨

  • 3.1. tsc -w : 实时监听并自动重新编译
  • 3.2. index.ts的代码:
// 解决canvas报错// let canvas:HTMLCanvasElement | null = document.querySelector('canvas')// if(canvas) {// let ctx = canvas.getContext('2d')// if(ctx) {// canvas.width = screen.availWidth// canvas.height = screen.availHeight// }// }letcanvas:HTMLCanvasElement=document.querySelector('canvas')asHTMLCanvasElementletctx=canvas.getContext('2d')asCanvasRenderingContext2D canvas.width=window.innerWidth canvas.height=window.innerHeightletstr:string[]='XMZSWZS010101'.split('')letArr=Array(Math.ceil(canvas.width/10)).fill(0)console.log(Arr)constrain=()=>{ctx.fillStyle='rgba(0,0,0,0.05)'ctx?.fillRect(0,0,canvas.width,canvas.height)ctx.fillStyle='#0f0'Arr.forEach((item,index)=>{constchar=str[Math.floor(Math.random()*str.length)]||'';// 添加默认值防止undefinedctx.fillText(char,index*10,item+10)Arr[index]=item>canvas.height||item>Math.random()*10000?0:item+10})}setInterval(rain,40)
  • 3.2. index.html的代码:引入编译后的index.js代码
    • 编译后的js代码:

      // 1. ecma Number Date RegExp Error XMLHttpRequest// 2. dom querySelector querySelectorAll// 3. bom promise localStorage location cookie// 4. 案例: 代码雨// 1. ecma Number Date RegExp Error XMLHttpRequest// let num:Number = new Number(1)// let date:Date = new Date()// let reg:RegExp = new RegExp(/\w/)// let err:Error = new Error('错了')// let xhr:XMLHttpRequest = new XMLHttpRequest()// console.log(num, date, reg, err, xhr)// 2. dom querySelector querySelectorAll// 2.1 querySelector// 2.1.1. HTML(元素名称)Element HTMLElement(毫无特殊的一些标签) Element// let div:HTMLDivElement = document.querySelector('div')// let input:HTMLInputElement = document.querySelector('input')// let canvas:HTMLCanvasElement = document.querySelector('canvas')// let section:HTMLElement = document.querySelector('section')// let header:HTMLElement = document.querySelector('header')// let footer = document.querySelector('footer') as Element // 直接断言成Element也是可以的// console.log(div, input, canvas, section, header, footer)// 2.2. querySelectorAll// let divList:NodeList = document.querySelectorAll('div footer ')// // document.querySelectorAll('div')元素是动态的,使用NodeListOf<类型1 | 类型2 | ...>// let divList:NodeListOf<HTMLDivElement | HTMLElement> = document.querySelectorAll('div')// // divList.forEach// console.log(divList)// 3. bom promise localStorage location cookie// let local:Storage = localStorage// let lo:Location = location// let promise:Promise<number> = new Promise((r) => r(123))// let promise1:Promise<string> = new Promise((r) => r('小满'))// let cookie:string = document.cookie// console.log(cookie)// promise.then(res => {// // res: 推断出来是number类型了// // res.toFixed number类型的方法// console.log(res)// })// local.setItem('name', '小满')// 4. 案例: 代码雨// 解决canvas报错// let canvas:HTMLCanvasElement | null = document.querySelector('canvas')// if(canvas) {// let ctx = canvas.getContext('2d')// if(ctx) {// canvas.width = screen.availWidth// canvas.height = screen.availHeight// }// }letcanvas=document.querySelector('canvas');letctx=canvas.getContext('2d');canvas.width=window.innerWidth;canvas.height=window.innerHeight;letstr='XMZSWZS010101'.split('');letArr=Array(Math.ceil(canvas.width/10)).fill(0);console.log(Arr);constrain=()=>{ctx.fillStyle='rgba(0,0,0,0.05)';ctx===null||ctx===void0?void0:ctx.fillRect(0,0,canvas.width,canvas.height);ctx.fillStyle='#0f0';Arr.forEach((item,index)=>{constchar=str[Math.floor(Math.random()*str.length)]||'';// 添加默认值防止undefinedctx.fillText(char,index*10,item+10);Arr[index]=item>canvas.height||item>Math.random()*10000?0:item+10;});};setInterval(rain,40);export{};//# sourceMappingURL=index.js.map
    • index.html

      <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin:0;padding:0;overflow:hidden;}</style></head><body><canvasid="canvas"></canvas><scripttype="module"src="./index.js"></script></body></html>

原文链接:点击这里

http://www.jsqmd.com/news/424937/

相关文章:

  • 开发者社区的“丧尸式“构建策略:从理论到实践
  • 亲测不踩雷!4款初中语文神仙APP,从基础到中考全覆盖(家长必存) - 品牌测评鉴赏家
  • 中考文言文翻译总丢分?5家宝藏线上机构实测推荐,适配不同基础初中生 - 品牌测评鉴赏家
  • PyTorch神经网络组件之Conv2d
  • 中考阅读理解丢分严重?3家靠谱线上机构实测推荐,帮娃高效提分不踩坑 - 品牌测评鉴赏家
  • 看2026上海家装,原木风装修厂家推荐排行来啦,轻奢大平层设计/新中式软装设计/原木风精装房设计,上海家装厂家有哪些 - 品牌推荐师
  • 2026初中语文阅读理解线上辅导大揭秘,选对机构成绩飙升! - 品牌测评鉴赏家
  • 这次终于选对AI论文工具,千笔·专业学术智能体 VS 云笔AI,专科生专属!
  • Task04:字符串
  • 261_尚硅谷_单元测试综合案例
  • 基于YALMIP和CPLEX的Matlab程序实现配电网故障重构模型的二阶锥优化方法,通用性高...
  • 用while循环输出1~1000之间能被5整除的数,并且每行输出3个
  • 实测才敢推!MBA专属降AI神器 —— 千笔·专业降AI率智能体
  • 初中语文提分秘籍!揭秘3家极速提分线上机构 - 品牌测评鉴赏家
  • 干货来了:千笔·降AI率助手,遥遥领先的降AI率工具
  • 2026年灰铁厂家推荐,精密圆棒生产与质量检测认证 - 品牌鉴赏师
  • 小学语文阅读理解辅导哪个平台好?实测5大热门平台,家长闭眼冲不踩坑 - 品牌测评鉴赏家
  • Copilot 模式和 Agent 模式的区别是什么?
  • 论文写不动?千笔ai写作,人气爆表的AI论文网站
  • std::stringstream 超详细讲解(C++ 字符串流)
  • 【ISAC】6G低空经济新突破!协作式ISAC技术实现无人机精准感知与参数估计【附MATLAB代码】
  • 什么是向量数据库?在基于大模型的应用开发中,向量数据库主要解决什么问题?
  • 用for循环输出1~1000之间能被5整除的数,并且每行输出3个
  • 你都了解哪些向量数据库?如何选型?
  • 家长必看!2026宝藏线上机构,助力孩子作文稳步提升 - 品牌测评鉴赏家
  • 家人们谁懂啊!孩子作文像流水账,这些线上机构救大命 - 品牌测评鉴赏家
  • 计算0~100的奇数和、偶数和、总和
  • 向量数据库原理是什么? 请简述下它的原理
  • 45232453
  • 2026年球墨铸铁厂家推荐,资质齐全与售后完善优质企业 - 品牌鉴赏师