QT怎么打字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT怎么打字相关的知识,希望对你有一定的参考价值。

QT怎么打字?我打出来的都是拼音!怎么回是?

参考技术A 你可以点击对话栏
然后按键盘上左下角的
SHIFT上档
+CTRL控制
记住要同时按
接着调到自己会用的输入法
就可以打字了

如何获取打字稿记录中的值的键

【中文标题】如何获取打字稿记录中的值的键【英文标题】:How do I get the key of a value in a Typescript Record 【发布时间】:2020-03-14 16:16:23 【问题描述】:

代码如下:

export type Period = 'dy' | 'wk' | 'mn' | 'qt' | 'yr';

const periods: Record<Period, string> = 
    dy: 'Day',
    wk: 'Week',
    mn: 'Month',
    qt: 'Quarter',
    yr: 'Year'
  ;

当我尝试这样做时:

const key = Object.keys(periods).find(key =&gt; periods[key] === 'Day');

我当然会得到一个错误,因为periods[key] 不能保证key 是正确的类型。我应该怎么做呢?我想到了一个枚举,但我不能进行反向查找。我想要实现的只是一个显示“Day”但键为dy(等)的输入字段,并且可以将状态设置为正确的键,而不是用户选择另一个值时的值。

【问题讨论】:

【参考方案1】:

Object.keys 返回string[] 而不是Array&lt;keyof T&gt;(其中T 是传入值的类型)。原因在here 中概述。

由于您的对象可能不会有未知键,您可以使用类型断言:

export type Period = 'dy' | 'wk' | 'mn' | 'qt' | 'yr';

const periods: Record<Period, string> = 
  dy: 'Day',
  wk: 'Week',
  mn: 'Month',
  qt: 'Quarter',
  yr: 'Year'
;

const key = (Object.keys(periods) as Array<Period>).find(key => periods[key] === 'Day');

Playground Link

【讨论】:

问题在于Array&lt;Period&gt; 包含undefined,这也会报错。 @Sammy 你从哪里得到undefined?我发布的代码示例按原样工作。 Object.keys(periods) 返回的数组不应包含 undefined 哦,对不起,那是因为我试图将键设置为另一个函数中的值,但如果找不到它们的值,find 可能确实返回undefined。我会处理的。非常感谢! 为了我的需要而反其道而行之,这也奏效了。 typescript type Period = 'dy' | 'wk' | 'mn' | 'qt' | 'yr'; const periods: Record&lt;Period, string&gt; = dy: 'Day', wk: 'Week', mn: 'Month', qt: 'Quarter', yr: 'Year' ; const key = (Object.values(periods) as Array&lt;string&gt;).find(val =&gt; val == periods.dy); console.log(key); // Returns "Day" 【参考方案2】:

我发现自己需要多次解决这个问题。我有一些实用工具可以提供帮助。

这就是我会做的。

const _periods = 
  dy: 'Day',
  wk: 'Week',
  mn: 'Month',
  qt: 'Quarter',
  yr: 'Year',
 as const;

export type Period = keyof typeof _periods;
export type PeriodValue = typeof _periods[Period];

export const periods = _periods as Record<Period, PeriodValue>;

function keys<T>(object: T) 
  return Object.keys(object) as (keyof T)[];
;

const key = keys(periods).find((key) => periods[key] === 'Day');

// Compile error, value not possible.
const badValueKey = keys(periods).find((key) => periods[key] === 'Minute');

【讨论】:

以上是关于QT怎么打字的主要内容,如果未能解决你的问题,请参考以下文章

如何获取打字稿记录中的值的键

CorelDRAW里打字的时候怎么返回选取工具

手机打字想要的字总是在后面怎么办

PS打字下面为啥会空出一段来?

电脑wps一打字就滚动,怎么解决?

word表头斜线里怎么打字?