首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TypeScript系列:第五篇 - 断言&守卫(as、satisfies、is、as const)

    类型断言(Type Assertions) 类型断言(as),是一种编译时的机制,它不会在运行时检查类型,而是告诉编译器按照指定的类型处理变量。...let n: T = myName as T; // ✔️ 场景二:类型转换 const username = document.getElementById("username"); // HTMLElement...它在运行时检查 value 是否为数值,并返回一个布尔值。...非空断言 对于那些可能为空的变量(即可能等于undefined或null),TypeScript 提供了非空断言,保证这些变量不会为空,写法是在变量名后面加上感叹号!。 x!....toFixed() // x不为空 总结 类型断言 是一种编译时的机制,它不会在运行时检查类型,而是告诉编译器按照指定的类型处理变量。

    50100

    刚学会 TypeScript, 顺手做个贪吃蛇小游戏

    100px; display: flex; flex-flow: row wrap; justify-content: space-between; align-content: space-between...= document.getElementById("snake")!...'afterend':元素自身的后面。 5. 控制蛇的移动 现在我们的蛇已经能够添加身体了,但是我们没有添加控制蛇移动的方法,没有办法来展示这个效果 我们继续来看看如何使得蛇能够移动?...,不理解的可以想一想噢~ 在这段代码中,遇到了很多类型断言的问题,由于 TS 检查机制中不确定数组元素中有没有 offset 类方法,因此会给我们报错提示 8....,当满足掉头条件时,我们继续让它前进 set Y(value) { // 有没有第二个身体 if (this.bodies[1] && (this.bodies[1] as HTMLElement

    64840

    刚学会 TypeScript, 顺手做个贪吃蛇小游戏

    100px; display: flex; flex-flow: row wrap; justify-content: space-between; align-content: space-between...= document.getElementById("snake")!...'afterend':元素自身的后面。 5. 控制蛇的移动 现在我们的蛇已经能够添加身体了,但是我们没有添加控制蛇移动的方法,没有办法来展示这个效果 我们继续来看看如何使得蛇能够移动?...,不理解的可以想一想噢~ 在这段代码中,遇到了很多类型断言的问题,由于 TS 检查机制中不确定数组元素中有没有 offset 类方法,因此会给我们报错提示 8....,当满足掉头条件时,我们继续让它前进 set Y(value) { // 有没有第二个身体 if (this.bodies[1] && (this.bodies[1] as HTMLElement

    64610

    getElementById返回的是什么?串讲HTML DOM

    大家好,又见面了,我是你们的朋友全栈君。 1. getElementById()返回的是什么?   这个函数使用的最普遍,但是你有没有深入探究下,这个函数究竟返回的是什么么?我们来一起看看。...查阅 《JavaScript权威指南》中文第六版363页,我们可以知道: HTMLDivElement 是 HTMLElement 的一个子对象,而 HTMLElement 又是 Element 的子对象...这些由 getElementById() 得到的具体对象 就是图中最右一列对象,它们 其实就是 DOM 将具体的每个 HTML标签/元素 封装之后的 一个个HTMLElement 子对象。   ...为了防止误导,没有举错误的例子。上面的 alert(getElementById(“mydiv”).tagName) 是正确的,它会显示该元素的标签名:DIV(注意:返回的tagName都是大写)。...No 1 No Yes normalize() 合并相邻的Text节点并删除空的Text节点。 5 1 9 Yes removeChild() 删除(并返回)当前节点的指定子节点。

    3.7K20

    理解 TypeScript 类型收窄

    类型收窄常用于处理联合类型变量的场景,一个常见的例子是非空检查: // Type is HTMLElement | null const el = document.getElementById("foo...因此,TypeScript 能够从此代码块内的联合类型中排除 null 类型,从而产生更窄的类型,更易于使用。 此外,你还可以通过抛出异常或从分支返回,来收窄变量的类型。...例如: // Type is HTMLElement | null const el = document.getElementById("foo"); if (!...例如,以下从联合类型中排除 null 的方法是错误的: const el = document.getElementById("foo"); // Type is HTMLElement | null...el is HTMLInputElement,作为返回类型告诉类型检查器,如果函数返回true,则 el 变量的类型就是 HTMLInputElement。

    5.1K20

    【万字长文】TypeScript入门指南

    u:void = null//空值类型能够有这两种内容。...当一个函数没有返回值时,你通常会见到其返回值类型是 voidfunction fnvoid():void{ return//函数也可以定义为空值,如果定义了void则不能返回内容}//undefined...:number//这个问号就是可选的意思,条件稍微宽松了一些,下面引用这个age的话有没有这个属性都可以,不会报错}let obj:A = { name = "叶秋学长嗷嗷叫"//这里如果不写name...object、Object 以及 {} 这三个类型(第三个类型为空对象字面量模式)大家可能不太理解这集加餐环节就是进行补充,一个冷门但是不邪门的知识点Object类型//这个类型是跟原型链有关的原型链顶层就是...TypeScript 类型断言用来告诉编译器你比它更了解这个类型,并且它不应该再发出错误当 S 类型是 T 类型的子集,或者 T 类型是 S 类型的子集时,S 能被成功断言成 T。

    1.5K42

    🔖TypeScript 备忘录:如何在 React 中完美运用?

    } 函数类型 type FunctionProps = { /** 任意的函数类型 ❌ 不推荐 不能规定参数以及返回值类型 */ onSomething: Function; /** 没有参数的函数...这样可以声明返回对象中 current 属性的类型: const ref2 = useRefHTMLElement>(null); 以一个按钮场景为例: function TextInputWithFocusButton...有一种办法可以绕过去。 const ref1 = useRefHTMLElement>(null!); null!...focus() 是个更安全的选择,除非这个值真的不可能为空。...自定义 Hook 如果你想仿照 useState 的形式,返回一个数组给用户使用,一定要记得在适当的时候使用 as const,标记这个返回值是个常量,告诉 TS 数组里的值不会删除,改变顺序等等……

    3.7K21

    JS魔法堂:追忆那些原始的选择器

    二、HTMLDocument和HTMLElement下的常规选择器                                     1....[`id或name`]; // IE5678下,获取的是指定索引值的元素HTMLElement通过Object.prototype.toString.call()获取内部类型时,返回的是[object...({String} id或name)({Number} 索引); // 获取HTMLElement // IE8下,获取的是第一个匹配的元素HTMLElement通过Object.prototype.toString.call...name属性值匹配的所有元素,返回一个有函数功能的[object Object]对象 document.all.item({String} id或name); // IE567,返回元素(HTMLElement...; // 返回2   通过在Chrome的调试工具可查看Webkit解析生成的DOM树结构,是不生产嵌套的form元素的,并且将嵌套的form节点下的子节点提取到上一级。

    3.3K70

    (长文预警) 你还在烦工作中碰到的拖拽问题?一个框架jiejue

    revertClone:boolean—在移动到另一个列表后,将克隆的元素恢复到初始位置 dragUlKey() { const ulKey = document.getElementById('...3到5之间的值是好的 disabled 选项 如果设置为,则禁用可排序true var sortable = Sortable.create(list); document.getElementById...默认情况下,此选项为true,这意味着Sortable在应该被隐藏时将从DOM中删除克隆的元素 emptyInsertThreshold 选项 拖动时鼠标必须与一个空的可排序对象之间的距离(以像素为单位...也可以将其设置为HTMLElement,这将是自动滚动的基础 scrollFn 选项 定义将用于自动滚动的功能。默认情况下使用el.scrollTop / el.scrollLeft。...continue'如果希望允许Sortable的本机自动滚动,则应返回此函数 scrollSensitivity 选项 定义鼠标必须靠近边缘才能开始滚动 scrollSpeed 选项 鼠标指针进入该scrollSensitivity

    8.7K10

    jquery框架分析-构造jquery对象初步

    ")方法获取jquery对象, 并且你的页面中只有一个id为yourId的元素 那么$("#yourId")[0]就是HtmlElement元素 与document.getElementById("yourId...,暂且不表 注意这两个参数都在返回的jquery对象中体现出来了(以两个同名的属性展示) 下面看一下这个方法体内部的实现逻辑 //如果没有选择器或者选择器为空的话,就把document对象赋值给他...selector = selector || document; //如果selector参数是dom元素,直接返回jquery对象 //也就是说你可以$(document.getElementById...(如果有的话) //第2个元素是第2个子表达式相匹配的文本(如果有的话) //第3个元素是第3个子表达式相匹配的文本(如果有的话)这里就是元素的ID,不包含# var match = quickExpr.exec...( selector ); //正则表达式匹配到了内容   并且 match[1]不为空 或者 context为空 //match[1]不为空的时候selector是HTML字符串,也就是你可以用$(

    1.8K30

    尤大 3 天前发在 GitHub 上的 vue-lit 是啥?

    vue-lit[2],直觉告诉我这又是一个啥面向未来的下一代 xxx,所以我就点进去看了一眼是啥新玩具。...而 lit-html 就不一样了,它是基于 tagged template 的,使得它不用编译就可以在浏览器上运行,并且和 HTML Template 结合想怎么玩怎么玩,扩展能力更强,不香吗?..., document.getElementById('button2')); render(Button('Error', { type: 'error' }), document.getElementById...Shadow DOM 里外的 selector 是相互获取不到的,所以也没办法在内部使用外部定义的样式,当然外部也没法获取到内部定义的样式。 这样有什么好处呢?.../ 非响应式 effect:简单理解就是 watcher const state = reactive({ name: "前端试炼", }); console.log(state); // 这里返回的是

    1.2K20

    尤大 几天前发在 GitHub 上的 vue-lit 是啥?

    vue-lit[2],直觉告诉我这又是一个啥面向未来的下一代 xxx,所以我就点进去看了一眼是啥新玩具。...而 lit-html 就不一样了,它是基于 tagged template 的,使得它不用编译就可以在浏览器上运行,并且和 HTML Template 结合想怎么玩怎么玩,扩展能力更强,不香吗?..., document.getElementById('button2')); render(Button('Error', { type: 'error' }), document.getElementById...Shadow DOM 里外的 selector 是相互获取不到的,所以也没办法在内部使用外部定义的样式,当然外部也没法获取到内部定义的样式。 这样有什么好处呢?.../ 非响应式 effect:简单理解就是 watcher const state = reactive({ name: "前端试炼", }); console.log(state); // 这里返回的是

    1.6K20

    尤大 3 天前发在 GitHub 上的 vue-lit 是啥?

    vue-lit[2],直觉告诉我这又是一个啥面向未来的下一代 xxx,所以我就点进去看了一眼是啥新玩具。...而 lit-html 就不一样了,它是基于 tagged template 的,使得它不用编译就可以在浏览器上运行,并且和 HTML Template 结合想怎么玩怎么玩,扩展能力更强,不香吗?..., document.getElementById('button2')); render(Button('Error', { type: 'error' }), document.getElementById...Shadow DOM 里外的 selector 是相互获取不到的,所以也没办法在内部使用外部定义的样式,当然外部也没法获取到内部定义的样式。 这样有什么好处呢?.../ 非响应式 effect:简单理解就是 watcher const state = reactive({ name: "前端试炼", }); console.log(state); // 这里返回的是

    1.1K30

    尤大 3 天前发在 GitHub 上的 vue-lit 是啥?

    vue-lit[2],直觉告诉我这又是一个啥面向未来的下一代 xxx,所以我就点进去看了一眼是啥新玩具。...而 lit-html 就不一样了,它是基于 tagged template 的,使得它不用编译就可以在浏览器上运行,并且和 HTML Template 结合想怎么玩怎么玩,扩展能力更强,不香吗?..., document.getElementById('button2')); render(Button('Error', { type: 'error' }), document.getElementById...Shadow DOM 里外的 selector 是相互获取不到的,所以也没办法在内部使用外部定义的样式,当然外部也没法获取到内部定义的样式。 这样有什么好处呢?.../ 非响应式 effect:简单理解就是 watcher const state = reactive({ name: "前端试炼", }); console.log(state); // 这里返回的是

    1K31
    领券