为什么打字稿值变成 "any" 类型

Why typescript value becomes of type "any"

所以似乎出于某种原因,不确定是谁的错 - typescript 类型未被识别...

例如,我使用的是“pinia@next”npm 包,这是一个简单的演示代码:

(这是文件夹中唯一的文件和安装的单个软件包npm install pinia@next

import { defineStore, Store } from "pinia";

export type State = {
  anyProperty: string
};

export const useAccountStore = defineStore("account", {
  state: () => ({} as State),
});

var test = useAccountStore() as Store<"account", State>;

在这段代码中:

  1. “useAccountStore”的类型正确
  2. "StoreDefinition" 类型是 returns "Store" 作为 return 类型的函数:
  3. VS Code 认为它 return 是一个“任何”类型:

  1. 甚至,当我将其显式转换为“Store”类型时,结果为“any”

知道会发生什么吗?

Storepinia's types.js file 中定义为

export type Store<
  Id extends string = string,
  S extends StateTree = {},
  G /* extends GettersTree<S>*/ = {},
  // has the actions without the context (this) for typings
  A /* extends ActionsTree */ = {}
> = _StoreWithState<Id, S, G, A> &
  UnwrapRef<S> &
  _StoreWithGetters<G> &
  // StoreWithActions<A> &
  (_ActionsTree extends A ? {} : A) &
  PiniaCustomProperties<Id, S, G, A> &
  PiniaCustomStateProperties<S>

如果其中任何一个解析为 any,那么整个事情都会发生。