TypeScript 自动补全在推断类型上失败

44u64gxh  于 4个月前  发布在  TypeScript
关注(0)|答案(9)|浏览(82)

翻译结果为:**TypeScript版本:**3.1.0-dev.20180810

**搜索词:**自动补全推断

代码

type ValueTypes = 1 | 2 | 3;

export type RecordValues<Props extends string | number | symbol> = Record<
  Props,
  ValueTypes
>;

export function identityFn<RV extends RecordValues<keyof RV>>(value: RV) {
  return value;
}

const recordValue: RecordValues<"asdf"> = {
  asdf: 2 //Autotcomplete works fine for the value here
};

identityFn({
  asdf: 1 //Autocomplete shows every type available
});

预期行为:

对于第二个评论中的值的自动补全,与第一个相同。请注意,我所说的不是键,而是值。

实际行为:

值的自动补全建议了所有可用的类型。

**Playground链接:**link

相关问题:#14841

btqmn9zl

btqmn9zl1#

这在TypeScript@next中无法复现。

t8e9dugd

t8e9dugd2#

@sheetalkamat 我刚刚尝试了3.2.0-dev.20181110版本,但仍然存在问题。

2skhul33

2skhul333#

问题在于,在第一个示例中,我们显示了 123 作为推荐完成项。对于第二个示例,我们没有得到上下文类型,也没有推荐的完成项。

kqhtkvqz

kqhtkvqz4#

@andrew-w-ross Are you still seeing this with typescript@next?

If yes can you please provide tsserver log.
You can upload logs by following these steps:

  1. With "typescript.tsserver.log": "verbose" enabled
  2. Restart vscode or vscode insiders
  3. Reproduce the problem
  • You can share the logs using
  • either by sharing logs in the folder that gets opened by running open tsserver log from command palette

or

  • Run code --upload-logs on the command line (or code-insiders --upload-logs if using vscode insiders) and follow instructions and Then share the log file ID
gojuced7

gojuced75#

@sheetalkamat 是的,你得到的行为是完美的。不幸的是,我没有得到那个。在稳定代码和内部人员中尝试了ts 3.3.0-dev.20190104,仍然得到了原始行为。
这是日志ID 3618733104。

wz8daaqr

wz8daaqr6#

@andrew-w-ross 看起来问题只有在输入1之前才会出现(导致错误类型)。非常感谢,因为现在我们已经找到了重现问题的方法。

uidvcgyl

uidvcgyl7#

你是否还需要更多的信息?

ssgvzors

ssgvzors8#

对不起,我忘记更新标签了。

wqsoz72f

wqsoz72f9#

关于这个问题有什么更新吗?

相关问题