https://github.com/solved-ac/ui-react/blob/609190fe6c6b13847fbccc7814bb073af95c7655/src/utils/styles.ts?_pjax=%23js-repo-pjax-container%2C%20div%5Bitemtype%3D%22http%3A%2F%2Fschema.org%2FSoftwareSourceCode%22%5D%20main%2C%20%5Bdata-pjax-container%5D#L7-L19
위 부분에서 v의 타입을 정확히 정의하기 위해서는 (MakeKebabCase<T>
같은 타입을 만든 후) `var(--solvedac-${MakeKebabCase<P>}-${string})`
와 같이 정의되어야 합니다.
그 이유는 다음과 같습니다.
https://github.com/solved-ac/ui-react/blob/609190fe6c6b13847fbccc7814bb073af95c7655/src/utils/styles.ts?_pjax=%23js-repo-pjax-container%2C%20div%5Bitemtype%3D%22http%3A%2F%2Fschema.org%2FSoftwareSourceCode%22%5D%20main%2C%20%5Bdata-pjax-container%5D#L29-L31
v
는 위 코드에 의해 결정되고, 각 값은 vars
오브젝트의 키 k
에 대해 `var(${vars[k]})`
입니다.
https://github.com/solved-ac/ui-react/blob/609190fe6c6b13847fbccc7814bb073af95c7655/src/utils/styles.ts?_pjax=%23js-repo-pjax-container%2C%20div%5Bitemtype%3D%22http%3A%2F%2Fschema.org%2FSoftwareSourceCode%22%5D%20main%2C%20%5Bdata-pjax-container%5D#L22-L27
vars
는 위 코드에 의해 결정되고, 각 값은 names
배열의 원소 name
에 대해 `--solvedac-${toCssName(prefix)}-${toCssName(name)}`
입니다.
https://github.com/solved-ac/ui-react/blob/609190fe6c6b13847fbccc7814bb073af95c7655/src/utils/styles.ts?_pjax=%23js-repo-pjax-container%2C%20div%5Bitemtype%3D%22http%3A%2F%2Fschema.org%2FSoftwareSourceCode%22%5D%20main%2C%20%5Bdata-pjax-container%5D#L4-L5
toCssName
은 위 코드와 같이 정의되고, 사이사이에 낀 알파벳 대문자를 소문자로 바꾸는 역할을 합니다.
따라서, toCssName(prefix)
의 타입은 P
라고 볼 수 없습니다.
반례로 P = 'exampleValue'
, name = string
일 때 실제 값은 --solvedac-example-value-${string}
일 것입니다.