我有以下示例代碼片段:如何在TypeScript中爲css顏色定義類型?
type Color = string;
interface Props {
color: Color;
text: string;
}
function Badge(props: Props) {
return `<div style="color:${props.color}">${props.text}</div>`;
}
var badge = Badge({
color: '#F00',
text: 'Danger'
});
console.log(badge);
我試圖得到一個生成錯誤如果顏色是無效的,就像這樣:
var badge = Badge({
color: 'rgba(100, 100, 100)',
text: 'Danger'
});
是否有如何定義Color
以便它只允許匹配以下模式之一的字符串?
#FFF
#FFFFFF
rgb(5, 5, 5)
rgba(5, 5, 5, 1)
hsa(5, 5, 5)
我認識到,有顏色,如red
和white
但可能使如果這個更難回答可以接受這些。
只是爲了一點點:這不是不可能的......它只需要tooooooone和一個一點點的代碼就像'type Color ='#100000'| '#200000'| ... | '#FFFFFF'| rgb(1,0,0)| rgb(2,0,0)| ...';) – gaa
是的,這是可能的,並且編寫一個自動化腳本來生成這個似乎不太合理的東西(畢竟,有一個腳本可以從.css生成'.d.ts'文件用於CSS模塊類型的文件)。但我不知道這是OP想要的:)。 –