32

我正在使用依赖于专有财产navigator.id的角色。由于此属性不是标准的,TypeScript 编译器会生成以下警告:

$ tsc home.ts --out my_ts_generated_code.js
/Users/..../home.ts(27,18): The property 'id' does not exist on value of type 'Navigator'

但是 .js 文件已成功生成并在 FF15 浏览器上运行,没有任何警告/错误消息。
根据文档的说明,我还包含了一个 polyfill navigator.id,因此navigator.id肯定会在每个浏览器中都可用。

有人可以建议我如何处理这个警告吗?

索引.html

<!-- some HTML omit above -->
<script src="https://login.persona.org/include.js"></script>
<script src="my_ts_generated_code.js"></script>
<button class="btn" id="signin">Sign in</button>
<button class="btn" id="signout">Sign out</button>
<!-- some HTML omit below -->

主页.ts

declare var $;

class Student {
    fullname : string;
    constructor(public firstname, public middleinitial, public lastname) {
        this.fullname = firstname + " " + middleinitial + " " + lastname;
    }
}

interface Person {
    firstname: string;
    lastname: string;
}

function greeter(person : Person) {
    return "Hello, " + person.firstname + " " + person.lastname;
}

var user = new Student("Jane", "M.", "User");

$(function() {
    $('#signin').on('click', function(e) {
        e.preventDefault();
        navigator.id.request();
    });

    $('#signout').on('click', function(e) {
        e.preventDefault();
        navigator.id.logout();
    });
    //document.body.innerHTML = greeter(user);
});
4

2 回答 2

56

1)您可以重新解释导航器道具。

(<any>navigator).id.request();

2)您可以自己声明 id prop

我的公司.lib.d.ts

interface Navigator {
  id: any
}

应用程序.ts

navigator.id.request();

观看此视频http://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript/ Anders 告诉 jQuery.UI 向 jQuery 添加新方法(见 46 分钟)

于 2012-10-03T07:34:29.423 回答
1

在 stmt 之前添加检查if(navigator.id != null && typeof navigator.id != 'undefined'),其中 navigator.id 被引用

于 2012-10-03T06:56:13.217 回答