冒着证明我对TypeScript类型缺乏了解的风险 - 我有以下问题.
当你为这样的数组做一个类型声明时......
position: Array<number>;
Run Code Online (Sandbox Code Playgroud)
...它会让你制作一个任意长度的数组.但是,如果你想要一个包含具有特定长度的数字的数组,即对于x,y,z组件为3,你可以为固定长度的数组创建一个类型,就像这样吗?
position: Array<3>
Run Code Online (Sandbox Code Playgroud)
任何帮助或澄清赞赏!
我正在使用Typescript创建一个shogi游戏板.将棋盘有9个等级和档案.
我想断言一个9x9多维数组作为一种类型,以确保数组的大小和内容.
目前我正在以这种方式创建我的9x9板类型:
type Board9x9<P> = [
[P, P, P, P, P, P, P, P, P],
[P, P, P, P, P, P, P, P, P],
[P, P, P, P, P, P, P, P, P],
[P, P, P, P, P, P, P, P, P],
[P, P, P, P, P, P, P, P, P],
[P, P, P, P, P, P, P, P, P],
[P, P, P, P, P, P, P, P, P],
[P, P, P, P, P, P, P, P, P],
[P, …Run Code Online (Sandbox Code Playgroud) 说我正在做Tab+Panel调用的组件TabsPanels。我想确保我得到了相同数量的Tab和Panel组件,如下所示:
type TabsPanelsProps = {
tabs: Tab[];
panels: Panel[];
}
Run Code Online (Sandbox Code Playgroud)
<TabsPanels
tabs={[<Tab/>, <Tab/>]}
panels={[<Panel/>]} // Error: tabs.length and panels.length do not match
/>
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?如果有一些效用函数,比如
PropsAreEqual<T, K1, K2, P>
where
T = type
K1 = key 1
K2 = key 2
P = the property to be equal
Run Code Online (Sandbox Code Playgroud)
这显然很糟糕,但你明白我在说什么。那么你可以做
PropsAreEqual<TabsPanelsProps, 'tabs', 'panels', 'length'>
Run Code Online (Sandbox Code Playgroud)