打字稿中的两个代码之间有什么区别?

时间:2016-07-21 18:50:42

标签: javascript typescript

我刚刚开始打字并且陷入了这个问题。

我有两个代码,第一个代码中有一个对象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'.

1 个答案:

答案 0 :(得分:7)

这是因为0.6.6global variable defined in lib.d.tsWindow.name):

name

您收到此错误的原因是您的代码也在全局范围内。这就是使用不同变量名称的原因。