使用TypeScript中的instanceof来查找函数的返回类型会导致“引用类型,但在此处用作值”]]

问题描述 投票:0回答:3

我正在使用TypeScript,并且函数返回两种类型的并集。它可以返回字符串或模型,但是我不知道如何获取类型并根据返回的类型执行操作。

我该怎么做?在此示例中,如何将字符串和IMyModel用作值(错误消息建议)?该错误令我感到困惑。

export interface IMyModel {
  id: number;
  name: string;
}

const myFunc = (value: boolean): string | IMyModel => {
  if (value) return "a string";

  return {
    id: 12,
    name: "model",
  };
};

const a = myFunc(true);

if (a instanceof string) {
  console.log("it is a string");
}

if (a instanceof IMyModel) {
  console.log("it is a model");
}

我在使用instanceof的行中的Visual Studio代码中收到以下静态错误:

'字符串'仅指类型,但在此处用作值。ts(2693)

'IMyModel'仅引用类型,但在此处用作值。ts(2693)

enter image description here

我也将界面切换为使用“类型”,但这是相同的。

我正在使用TypeScript,并且函数返回两种类型的并集。它可以返回一个字符串或一个模型,但是我不知道如何获取类型并基于...

typescript
3个回答
1
投票

要检查某些东西是否是字符串,您可以像在JavaScript中一样进行操作


1
投票

object instanceof constructor表达式中的右手参数应为构造函数/函数。


1
投票

Typescript是javascript的超集,最终会编译为javascript。话虽这么说,重要的是要考虑您正在编写的代码像javascript一样。 More

© www.soinside.com 2019 - 2024. All rights reserved.