refactor: better types of SimpleToggleField

This commit is contained in:
EnixCoda 2021-05-23 02:18:36 +08:00
parent 14478e5757
commit 8ff78b0caa
No known key found for this signature in database
GPG key ID: 0C1A07377913A1DD
2 changed files with 8 additions and 8 deletions

View file

@ -3,25 +3,25 @@ import * as React from 'react'
import { Config } from 'utils/configHelper'
import { Field } from './settings/Field'
export type SimpleField = {
key: keyof Config
export type SimpleField<Key extends keyof Config> = {
key: Key
label: string
wikiLink?: string
tooltip?: string
description?: string
overwrite?: {
value: <T>(value: T) => boolean
onChange: (checked: boolean) => any
value: (value: Config[Key]) => boolean
onChange: (checked: boolean) => Config[Key]
}
}
type Props = {
field: SimpleField
type Props<Key extends keyof Config> = {
field: SimpleField<Key>
onChange?(): void
}
export function SimpleToggleField({ field, onChange }: Props) {
export function SimpleToggleField<Key extends keyof Config>({ field, onChange }: Props<Key>) {
const { overwrite } = field
const configContext = useConfigs()
const value = configContext.value[field.key]

View file

@ -29,7 +29,7 @@ function SettingsBarContent() {
const useReloadHint = useStateIO<React.ReactNode>('')
const { value: reloadHint } = useReloadHint
const moreFields: SimpleField[] =
const moreFields: SimpleField<'copyFileButton' | 'copySnippetButton'>[] =
platform === GitHub
? [
{