代码之家  ›  专栏  ›  技术社区  ›  Sammy

使用流验证对象映射

  •  1
  • Sammy  · 技术社区  · 7 年前

    我有以下几点:

    // @flow
    
    import React from 'react';
    
    type IconMap = {
      [name: string]: {}
    };
    
    export const icons: IconMap = {
      circle: {
        viewbox: '0 0 473.66 473.66',
        path(props) {
          return (
            <g id="Layer_2" data-name="Layer 2" {...props}>
              <g id="Layer_1-2" data-name="Layer 1">
                <circle cx="236.83" cy="236.83" r="236.83" />
              </g>
            </g>
          );
        }
      }
    };

    首先,我该怎么做 IconMap 上面不接受未密封对象作为值,但是 { viewbox: string, path: function } 相反?

    第二,如果我想打电话 icons 如下:

    const obj = icons['circle']

    如果 circle 其中一把钥匙 图标 ?

    1 回复  |  直到 7 年前
        1
  •  0
  •   m0meni Chayim Friedman    7 年前

    对于第一个问题,您可以:

    type IconMap = {
      [name: string]: {|
        viewbox: string,
        path: Object => React$Node
      |}
    };
    

    对于第二个问题,据我所知,在编译时不可能做到这一点。

    React$Node 已定义 here 和默认情况下带有流的船舶。或者你可以

    import type {Node} from 'react