如何在Typescript中编写文字Javascript

前端之家收集整理的这篇文章主要介绍了如何在Typescript中编写文字Javascript前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要在 HTMLElement中添加一个成员,换句话说,我需要将数据存储到一个元素中.这就是我想要实现的,好像我在 ScriptSharp编码.
/** My method */
public DoIt(element: Element,obj: Object) {
  Literal("{0}.extended = {1}",element,obj); // This is not standard Typescript!
}

在我的示例中,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;
};

如何在打字稿中实现这一目标?或许我应该以不同的方式处理这个问题?

解决方法

任何有效的JavaScript也是有效的TypeScript.
这意味着您可以在代码中的任何位置编写文字JS.
var _doit = function(element,obj) {
  element.extended = obj;
};

这是有效的JS和TS.

但是,由于您使用TypeScript,您可能还希望对代码使用静态类型.
如果您只是在代码添加类型,它将正确编译,但您将收到语义错误

var _doit = function(element:HTMLElement,obj) {
  element.extended = obj; // error: HTMLElement doesn't have property 'extended'
};

要防止此错误,您可以通知编译器您打算在HTMLElement上创建新属性

interface HTMLElement {
  extended?: any;
}

现在,编译器知道您在HTMLElement上扩展了(可选)属性,并且编译时没有错误.您还将获得此属性代码自动完成(如果提供,则为JSDoc).

猜你在找的JavaScript相关文章