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

Typescript:为什么析构函数对象不包含类型?

  •  0
  • StudioTime  · 技术社区  · 4 年前

    在下文中,正如我所说,我预计这将失败 afternoon 应为类型 number ,但它不会失败。

    我的猜测是,当我悬停在单词上时,我的破坏是错误的 下午 返回时将类型显示为 any (在VS代码中)。

    或者,这可能都是错误的,这实际上是我第一次玩打字游戏,还没有得到!

    const greetings =  {
        morning: "Good morning.",
        evening: "Good evening.",
        afternoon: "Good afternoon.",
    };
    
    interface AboutGreetingTypes {
        morning: string,
        evening: string,
        afternoon: number,
    };
    
    const aboutGreeting = ({copy}): AboutGreetingTypes => {
        const d = new Date();
        const timeInHours = d.getHours();
    
        const { morning, evening, afternoon } = copy;
    
        if (timeInHours < 12) {
            return morning;
        }
        if (timeInHours > 18) {
            return evening;
        }
        if (timeInHours > 12) {
            return afternoon;
        }
    };
    
    console.log(aboutGreeting({copy: greetings}));
    2 回复  |  直到 4 年前
        1
  •  2
  •   Pedro Feltrin    4 年前

    您的函数参数类型应为 {copy: AboutGreetingTypes} 不仅仅 AboutGreetingTypes

        2
  •  1
  •   Alex Wayne    4 年前
    const aboutGreeting = ({copy}): AboutGreetingTypes => {
    

    此行声明一个函数,该函数接受单个非类型化对象并返回 AboutGreetingTypes 。由于参数没有声明的类型,因此假定为 any ,它使您可以在没有类型错误的情况下执行任何操作。


    我认为你想要的是一个函数,它接受一个具有 copy 值为的属性 关于问候语类型 。

    看起来是这样的:

    const aboutGreeting = ({ copy }: { copy: AboutGreetingTypes }) => {
    

    See playground 它仍然有一些错误,但解决这些错误的方法是对不同问题的回答。

    推荐文章