Вы можете использовать перегрузки, чтобы либо вернуть требуемую версию, либо ту, для которой свойство необязательно:
interface IOptions {
clientId: string;
token: string;
}
interface IComponent {
name: string;
parent?: { name: string };
}
async function createComponent(): Promise<IComponent>
async function createComponent(opts: IOptions): Promise<Required<IComponent>>
async function createComponent(opts?: IOptions): Promise<IComponent> {
const component: IComponent = { name: '' };
if (opts) {
component.parent = { name: `${opts.clientId}-${opts.token}` };
}
return component;
}
async function main() {
const opts: IOptions = { clientId: '123', token: '321' };
const component: Required<IComponent> = await createComponent(opts);
console.log(component.parent.name);
}
Опция для того, чтобы сделать это программно, когда Ваш запуск приложения называет этот Windows API:
RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk);
И не зарегистрироваться называют этот API:
UnregisterHotKey(IntPtr hwnd, int id);
Оба существуют в user32
API
http://www.pinvoke.net/search.aspx?search=RegisterHotKey&namespace= [Все]
Если Вам нужен более усовершенствованный сценарий к тому, что предложение ярлыка оболочки, необходимо запустить с чтения Рычагов Win32 и Обзора Рычагов.
Строго говоря, необходимо добавить a WH_KEYBOARD
рычаг с помощью SetWindowsHookEx
функция. Также необходимо отсоединить через UnhookWindowsHookEx
когда Вы сделаны.
Существует старая статья от Dino Esposito, как сделать Windows Hooks в.NET через некоторый Win32 interop.
Если Ваше приложение (или ярлык на него) доступно на Вашем рабочем столе, можно щелкнуть правой кнопкой, чтобы получить контекстное меню, выбрать Свойства и ввести Сочетание клавиш там. Просто нажмите в текстовом поле Shortcut Key и нажмите желаемое сочетание клавиш.
Я присвоил WIN + C к моему калькулятору и WIN + V к моему регулятору громкости.
Боюсь, что это не то, что вы можете сделать, просто задав значения в реестре, это, как было указано в других ответах, необходимо для вызова некоторых подпрограмм Windows API для достижения этой цели.