And*_*dry 7 javascript typescript
我需要添加一个成员HTMLElement,换句话说,我需要将数据存储到元素中.这就是我想要实现的,就像我在ScriptSharp中编码一样.
/** My method */
public DoIt(element: Element, obj: Object) {
Literal("{0}.extended = {1}", element, obj); // This is not standard Typescript!
}
Run Code Online (Sandbox Code Playgroud)
在我的示例中, ScriptSharp(将C#代码转换为Javascript的项目)提供了一个Script.Literal对象,允许开发人员在无法实现C#抽象时编写纯Javascript.
这样Javascript输出是:
// Probably Typescript will render it a bit differently, but basically
// this is what we get in the end...
var _doit = function(element, obj) {
element.extended = obj;
};
Run Code Online (Sandbox Code Playgroud)
如何在打字稿中实现这一目标?或许我应该以不同的方式处理这个问题?
zlu*_*mer 18
任何有效的JavaScript也是有效的TypeScript.这意味着您可以在代码中的任何位置编写文字JS.
var _doit = function(element, obj) {
element.extended = obj;
};
Run Code Online (Sandbox Code Playgroud)
这是有效的JS 和 TS.
但是,由于您使用TypeScript,您可能还希望对代码使用静态类型.如果您只是在代码中添加类型,它将正确编译,但您将收到语义错误:
var _doit = function(element:HTMLElement, obj) {
element.extended = obj; // error: HTMLElement doesn't have property 'extended'
};
Run Code Online (Sandbox Code Playgroud)
要防止此错误,您可以通知编译器您打算在以下位置创建新属性HTMLElement:
interface HTMLElement {
extended?: any;
}
Run Code Online (Sandbox Code Playgroud)
现在编译器知道你有一个(可选)属性extended,HTMLElement并且编译时没有错误.您还将获得此属性的代码自动完成(如果提供,则为JSDoc).
| 归档时间: |
|
| 查看次数: |
17019 次 |
| 最近记录: |