typescript - 如何在 TypeScript 中编辑全局类型?
问题描述
window.getComputedStyle
返回一个 type 的值CSSStyleDeclaration
,它具有驼峰格式的 CSS 属性键。
但是,在 Chrome、Firefox 和 Safari 上都进行了测试,它以驼峰式和连字符分隔格式返回键值,并且我使用连字符分隔格式引用键:
const div = document.querySelector('div#test');
const computedStyles = window.getComputedStyle(div);
console.log(
'marginTop:', computedStyles.marginTop,
'margin-top:', computedStyles['margin-top']
);
div#test {
width: 100px;
height: 100px;
background-color: aqua;
margin-top: 50px;
}
<div id='test'></div>
这导致我在尝试获取引用键的值时需要使用很多丑陋的东西as unknown as ...
(如上面示例中的第二种情况),因此我决定在CSSStyleDeclaration
. 我只是不知道该怎么做。
只是为了说清楚:问题是 on CSSStyleDeclaration
(的返回类型window.getComputedStyle
)margin-top
as 属性不存在,但返回值实际上有它。
值得一提的是我不想创建新的自定义类型。基本上我只想扩展一个已经存在的类型,所以CSSStyleDeclaration
本地会有键已经存在,加上我自己的(margin-top
基于示例)。
解决方案
解决方案是简单地重新声明.d.ts
文件中的类型。它保留原始属性,并添加新属性。根据示例,它看起来像这样:
declare interface CSSStyleDeclaration {
'margin-top': string;
}
推荐阅读
- python - 使用 python scrapy 抓取同一链接的下一页
- node.js - 授予多个用户访问 limunati 代理区域的权限
- inheritance - 从 AppController::initialize 重定向而不运行子代码
- mysql - Laravel - 块更新太慢(SQLSRV - MYSQL)
- time - 如何计算 SAS 中 HTD(半年截止日期)的开始日期和结束日期?有没有像 intck 或 intnx 这样的功能可以帮助我的情况?
- c# - C#如何在数字右侧显示2dim数组
- c - 下面的 C 中二进制代码 Es 中的 ASCII 代码是我的代码,但它不起作用...在输出中我需要像 [C 067: 01000011]
- mysql - 小组再见 Mysql 8
- php - 如何使用 PHP 将数组打印到 XML
- javascript - 尝试将对象推送到数组时出现打字稿“padStart”错误