通常情况下,出现此问题是因为在代码中将类型名称用作了值。例如:在以下代码中,将Employee作为函数参数传递时,就会出现此错误:
class Employee {
name: string;
salary: number;
}
function increaseSalary(emp: Employee) {
emp.salary += 1000;
}
let emp = new Employee();
emp.name = "Tom";
emp.salary = 5000;
increaseSalary(Employee); // 错误:'Employee' only refers to a type, but is being used as a value here.
要解决这个问题,需要传递一个类的实例,而不是类本身。上面的错误代码可以修改为:
increaseSalary(emp); // 将 emp 作为参数传递