Typescript 类型脚本类型检查内联isn';t与类型签入功能相同

Typescript 类型脚本类型检查内联isn';t与类型签入功能相同,typescript,types,Typescript,Types,我有一个奇怪的问题(至少对我来说),内联类型检查与函数中的类型检查的工作方式不同。当提取到函数时,完全相同的检查不起作用 我已经发布了一个截图,这样你就可以看到错误,还有一个 我第一次在IntelliJ中遇到这个问题,但是在CodeSandbox(VisualStudio代码)中遇到了这个孤立的问题,所以我想问题是TypeScript 你知道为什么会这样吗 这是因为您需要实现“类型保护”: const isPromise=(maybespromise:unknown):maybespromise

我有一个奇怪的问题(至少对我来说),内联类型检查与函数中的类型检查的工作方式不同。当提取到函数时,完全相同的检查不起作用

我已经发布了一个截图,这样你就可以看到错误,还有一个

我第一次在IntelliJ中遇到这个问题,但是在CodeSandbox(VisualStudio代码)中遇到了这个孤立的问题,所以我想问题是TypeScript

你知道为什么会这样吗


这是因为您需要实现“类型保护”:

const isPromise=(maybespromise:unknown):maybespromise是Promise=>{
返回(
可能承诺的类型==“对象”&&
typeof(可以将Promise作为Promise)。然后==“函数”
);
};
//Util来判断参数是否为字符串
常量isString=(maybeString:未知):maybeString是字符串=>{
返回类型maybeString==“string”;
};
maybespromise是Promise
maybeString是string


下面是一个工作示例:

Awesome。我不知道。非常感谢。
const isPromise = (maybePromise: unknown): maybePromise is Promise<unknown> => {
  return (
    typeof maybePromise === "object" &&
    typeof (maybePromise as Promise<unknown>).then === "function"
  );
};

// Util to tell if argument is a String
const isString = (maybeString: unknown): maybeString is string => {
  return typeof maybeString === "string";
};