我希望能够将对象属性分配给给定键和值作为输入的值,但仍能够确定值的类型.这有点难以解释所以这段代码应该揭示问题:
type JWT = { id: string, token: string, expire: Date };
const obj: JWT = { id: 'abc123', token: 'tk01', expire: new Date(2018, 2, 14) };
function print(key: keyof JWT) {
switch (key) {
case 'id':
case 'token':
console.log(obj[key].toUpperCase());
break;
case 'expire':
console.log(obj[key].toISOString());
break;
}
}
function onChange(key: keyof JWT, value: any) {
switch (key) {
case 'id':
case 'token':
obj[key] = value + ' (assigned)';
break;
case 'expire':
obj[key] = value;
break;
}
}
print('id');
print('expire');
onChange('id', 'def456'); …Run Code Online (Sandbox Code Playgroud) 为什么Object.values()并Object.keys()总是给这两个键和值?
考虑以下代码:
enum Enum {
FOO,
BAR
}
console.log(Object.values(Enum));
console.log(Object.keys(Enum));
Run Code Online (Sandbox Code Playgroud)
其输出将是:
[ 'FOO', 'BAR', 0, 1 ]
[ '0', '1', 'FOO', 'BAR' ]
Run Code Online (Sandbox Code Playgroud)
为什么这样做,我如何只获取键和值?