string
是一个基本类型,用于表示文本数据。keyof
是一个关键字,用于获取一个对象类型的所有键(属性名)的联合类型。string
类型可以确保变量或参数是文本数据,有助于类型检查和避免运行时错误。keyof
可以帮助我们在编译时检查对象属性的访问是否有效,提高代码的健壮性和可维护性。string
类型常用于表示变量或参数的文本值。keyof
类型常用于确保对象属性的访问是有效的。interface Person {
name: string;
age: number;
}
function greet(person: Person) {
return `Hello, ${person.name}! You are ${person.age} years old.`;
}
function getPersonProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const person: Person = { name: "Alice", age: 30 };
console.log(greet(person)); // 输出: Hello, Alice! You are 30 years old.
console.log(getPersonProperty(person, "name")); // 输出: Alice
console.log(getPersonProperty(person, "age")); // 输出: 30
问题: 在模板文字中使用 keyof
时,可能会遇到类型不匹配的问题。
原因: 这通常是因为传递给模板文字的变量类型与预期不符。
解决方法: 确保传递给模板文字的变量类型与预期一致,并使用 keyof
进行类型检查。
interface Person {
name: string;
age: number;
}
function getPersonInfo<T, K extends keyof T>(person: T, key: K): T[K] {
return person[key];
}
const person: Person = { name: "Alice", age: 30 };
console.log(getPersonInfo(person, "name")); // 正确
// console.log(getPersonInfo(person, "address")); // 错误,"address" 不是 Person 的键
通过以上示例和解释,可以更好地理解 TypeScript 模板文字中 string
和 keyof
类型的用途及其应用场景。
领取专属 10元无门槛券
手把手带您无忧上云