我目前正在将遗留代码转换为项目的打字稿。该项目包含许多用纯 JavaScript 编写的自定义类,它们遵循相同的模式,即具有一个构造函数,该构造函数接受一个配置对象,该对象可以在其中定义许多配置选项。
我一直在研究如何在打字稿中定义允许的配置属性,但尚未提出我完全满意的解决方案。我首先声明一个配置接口,它允许我定义可用的配置选项,但无助于默认它们 - 我必须为定义和初始化复制我的配置接口两次或更多次。我(认为我)想要的是使用对象解构来用默认值定义类成员一次,之后就不必担心它,例如:
export interface MyClassConfig {
propA: string;
propB: boolean;
}
export class MyClass {
private propA: string = 'defautValue';
private propB: boolean;
constructor (config: MyClassConfig) {
{ propA, propB } = config;
}
}
Run Code Online (Sandbox Code Playgroud)
然后可以使用以下内容进行初始化:
let mc = new MyClass({ propB: false }); //mc.propA == 'defaultValue', mc.propB === false
Run Code Online (Sandbox Code Playgroud)
我不喜欢这需要我多次复制属性名称。谁能建议一种干净的方法来实现这一目标?
在IE 11中测试一些旧的东西时遇到过这个问题.例如:
http://codepen.io/Samih/pen/zaqjA
基本上,当你有一个display: table-cell
绝对定位内容的元素时,它会正常工作,直到你修改该绝对容器的内容.您可以通过单击示例中的一个表格单元格来查看此内容.
在Chrome,Firefox甚至IE 10中,这不会导致问题,但在IE 11中,您可以看到表格单元格高度消失为0,并且在您执行调整窗口大小之前不会再返回.
我尝试过一个黑客解决方案,它涉及使用javascript来改变单元格大小,然后将其更改回来,但在我应用它的地方证明它不可靠.如果有人能提出一个解决方案,我更喜欢基于CSS的解决方案.