如何验证传递的 prop 是否是 Svelte 中的组件类型?

the*_*ack 6 svelte svelte-component svelte-3

我有一个需要 afunction或 的道具Component。所以我想通过检查 prop 的类型来区分它是组件还是函数。我目前正在使用以下一种。当代码被混淆时,这可能在产品中不起作用。想知道更好的解决方案吗?

let isSvelteComponent = component => {
    return (
      typeof component !== "undefined" &&
      component.__proto__.name === "SvelteComponentDev"
    );
  };
Run Code Online (Sandbox Code Playgroud)

the*_*ack 1

我能够通过检查原型来解决这个问题,如下所示

import { SvelteComponent } from "svelte";
let isSvelteComponent = component => {
   return SvelteComponent.isPrototypeOf(component);
};
Run Code Online (Sandbox Code Playgroud)

  • 根据记录,这种检查会通过代码缩小而丢失。直到今天,我还没有一种可靠的方法来区分 Svelte 组件。 (2认同)