2016-07-21 4 views
3

타이프 스크립트를 시작한 직후에이 문제에 봉착했습니다.타이프 코드의 두 코드의 차이점은 무엇입니까?

두 코드가 있습니다. 첫 번째 코드에는 객체 name이 있고 다른 코드 (첫 번째 코드와 동일)에는 변수 이름이 user으로 변경되었습니다. 이제 문제는 첫 번째 코드에서 오류가 발생하지만 처음에는 문제가 없습니다.

첫 번째 코드 (생산 오류)

interface Person { 
    firstName : string; 
    lastName : string; 
} 

function greeter(person: Person) { 
    return "Hello " + person.firstName + " " + person.lastName; 
} 

var name = {firstName: "Girdhari", lastName: "Agrawal"}; 
document.body.innerHTML = greeter(name); 

두 번째 코드 (제대로 작동)

interface Person { 
    firstName : string; 
    lastName : string; 
} 

function greeter(person: Person) { 
    return "Hello " + person.firstName + " " + person.lastName; 
} 

var user = {firstName: "Girdhari", lastName: "Agrawal"}; 


document.body.innerHTML = greeter(user); 

이것을 이해하는 데 도움이 바랍니다.

편집

This is what I am getting while compiling first script 
greeter.ts(10,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'name' must be of type 'string', but here has type '{ firstname: string; lastName: string; }'. 
greeter.ts(13,35): error TS2345: Argument of type 'string' is not assignable to parameter of type 'Person'. 
+5

무엇이 오류입니까? 또한 작동하지 않는 버전에서 보이지 않는 문자가 있는지 확인하십시오. –

+0

질문 편집 –

+3

코드에서 문자열의 다른 부분에'name'을 정의하고있을 것입니다. – Igor

답변

7

nameglobal variable defined in lib.d.ts (Window.name)입니다 때문입니다 : 코드는 전역 범위도 있기 때문에

declare var name: string; 

이 오류를 얻고있는 이유입니다. 그래서 다른 변수 이름을 사용하는 것입니다.

관련 문제