keyof没有工作' name'属性

时间:2018-01-11 05:12:54

标签: angular typescript

我已经声明了一个具有name和lastName属性的接口Student。之后,我使用 keyof 创建了一个KEY,并声明了变量' help' KEY类型。

现在我正在初始化变量' help'使用名称然后就可以了,但是在使用lastName初始化时,我收到错误无法找到姓名' lastName'

interface Student { name: string; lastName: string; }

class Greeter {
    constructor() {}

  greeting(): void{
    type KEY = keyof Student;
    let help: KEY;

    help = name;   // ok
    help = lastName;  // Cannot find name 'lastName'
  }
}

1 个答案:

答案 0 :(得分:4)

您的代码错误

name指向全局name字符串:https://developer.mozilla.org/en-US/docs/Web/API/Window/name。可以将任何string分配给help对象。

FIX

正确例子:

interface Student {
  name: string;
  lastName: string;
}
class Greeter {
  constructor() { }

  greeting(): void {
    type KEY = keyof Student;
    let help: KEY;

    help = 'name';   // ok
    help = 'lastName';  // ok
    help = 'asdf';  // ERROR
  }
}