function setAttrsToElement(el: HTMLElement, attr: Record<string, any>) { for (const key in attr) { el.setAttribute(key, attr[key]) }}
这个函数接收两个参数,这个函数会遍历第二个参数的 key value 附加给 el 作为属性。
想达到的目的:
在调用这个函数时,代码可以提示自动补全出属性值。
如果是在 React 项目中最方便的方式是使用 React 提供 CSSProperties
类型:
import { CSSProperties } from "react";function setAttrsToElement(el: HTMLElement, attr: CSSProperties) { for (const key in attr) { el.setAttribute(key, attr[key]); }}
如果不是 React 项目,则可以安装 csstype
库:
import * as CSS from 'csstype';function setAttrsToElement(el: HTMLElement, attr: CSS.Properties) { for (const key in attr) { el.setAttribute(key, attr[key]); }}
如果按照提问来看 这是答案
public setAttrsToElement<T = CSSStyleDeclaration>(el: HTMLElement, attr: T) { for (const key in attr) { el.setAttribute(key, attr[key] as string); } }
但是按照题意来看 应该这样
public setAttrsToElement(el: HTMLElement, attr: Partial<CSSStyleDeclaration>) { for (const key in attr) { el.style[key] = attr[key] as string; } }
比方上面的类型,如果我想要 value 的类型在type为 'string' 时为 string ,在 type 为 'number' 的时候为 number。 要怎么定义这两个属性之间的类型约束?
我设置了一个动画,以在打开另一个开关/标签时隐藏一个开关/标签。同时,刚刚打开的开关向上移动。这里的简单解释非常有效。 但是,当我在开关/标签关闭后尝试向下移动时,它不会移动。另一个开关会很好地重新出现,但不会触发顶部约束更改。 我对这种类型的设置和动画都是以编程方式进行的相对较新,在花了一个小时之后,我被难住了。是因为我正在制作相对于另一个顶部约束的动画吗?如果它第一次工作,这有什么关系?即使隐
问题内容: 是否有一种优雅的方式来访问对象的第一个属性… 您不知道物业名称的地方 而不使用像jQuery这样的循环 例如,我需要在不知道foo1名称的情况下访问对象: 问题答案: var obj = { first: ‘someVal’ }; obj[Object.keys(obj)[0]]; //returns ‘someVal’ 使用此方法,您还可以通过索引访问其他属性。请注意!根据ECMAS
我有一个数据库,它有一个名为的JSON列,其中包含一个包含电子邮件地址的对象。由于某种原因,在某些情况下,输入数据时转义了引号,而在另一些情况下,没有转义引号。当字符串被转义时,MySql将其解释为字符串。未转义时,它是一个对象 有没有办法在MySql上放一个约束,将列限制为JSON对象,而不是字符串或数组?
场景再现: 由于我们 app 版本更新,有一个获取系统状态的函数进行了重构,为了兼容这个函数,我是这样设计代码的。(下面只是模拟场景的伪代码) 我在使用的地方是这样兼容的 此时我的 appVersion 就是 string|number类型的值。我之前在用到版本信息判断的地方就需要大改 有没有什么好的建议或者 TS 类型断言来帮我简化这些地方呢?
问题内容: 我正在寻找“添加”多个JavaScript对象(关联数组)的最佳方法。 例如,给定: 什么是最好的计算方式: 问题答案: 引入ECMAscript 6是为了用Javascript本身实现此目的。 所述 Object.assign() 方法被用于所有可枚举自己的属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 在许多现代浏览器中都受支持,但并非所有浏览器都支持。使用Babel