TypeScript에서 내장 객체의 독점/사용자 정의 속성에 대한 경고를 처리하는 방법

StackOverflow https://stackoverflow.com//questions/12703266

  •  13-12-2019
  •  | 
  •  

문제

저는 페르소나를 사용하고 있습니다. 독점 재산 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 브라우저에서 성공적으로 생성되고 실행됩니다.
또한 다음을 위한 폴리필도 포함합니다. navigator.id, 문서의 지시에 따라 navigator.id 확실히 모든 브라우저에서 사용할 수 있습니다.

누군가 이 경고를 처리하는 방법을 제안해 줄 수 있습니까?

index.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 -->

home.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);
});
도움이 되었습니까?

해결책

1) 네비게이터 소품을 재해석할 수 있습니다.

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

2) id prop 자신을 선언 할 수 있습니다.

mycompany.lib.d.ts

interface Navigator {
  id: any
}

app.ts

navigator.id.request();

이 영상을 보세요 http://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript/ Anders는 jQuery.UI가 jQuery에 새 메서드를 추가한다고 말합니다(46분 참조).

다른 팁

다음과 같은 수표를 추가하세요. if(navigator.id != null && typeof navigator.id != 'undefined') navigator.id가 참조되는 stmt 이전

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top