如果我们有一个界面(主要简化)
interface User {
Id: number;
Firstname: string;
Lastname: string;
Age: number;
Type: string;
}
我正在重构的当前逻辑以以下方式构建搜索字符串:
function formatSearchCriteriaText(user: User): string {
let searchText = "Date:" + Date.now();
//currently calls out every single property.
searchText += (user.Id) ? ", Id: " + user.Id : "";
searchText += (user.Lastname) ? ", Lastname: " + user.Lastname : "";
searchText += (user.Firstname) ? ", Firstname: " + user.Firstname : "";
searchText += (user.Age) ? ", Age: " + user.Age : "";
searchText += (user.Type) ? ", Type: " + user.Type : "";
return searchText;
}
如何最好地连接属性名称和值,以避免列出每个单独的属性.这是朝着正确方向迈出的一步吗?
type UserType<T> = {
[P in keyof T]: T[P] ? `$,{P as string}: {T[P]}` : "";
};