小编ImF*_*nky的帖子

类型“T”不可分配给类型“string”

问题是:我想创建一个获取参数并返回相同类型的函数。

我做了一个最简单的例子:

type Test = <T>(arg: T) => T;
const test: Test = (arg: string) => arg;
Run Code Online (Sandbox Code Playgroud)

Test 类型函数的这个简单实现会抛出错误“类型‘T’不能分配给类型‘string’”

有人可以解释一下为什么在不使用模板化参数中的 props 时会发生此错误吗?

typescript typescript3.0

6
推荐指数
1
解决办法
2万
查看次数

vscode 和 monaco-editor 之间不同的 Typescript 推理管理

我刚刚创建了一个复杂的函数,它有 3 个参数:名称、类型和方法。该函数将方法存储在存储中。它从第二个参数推断出第三个参数的返回类型。

addMethod.d.ts

interface SimplifiedTypeMap {
  string: string;
  number: number;
  boolean: boolean;
}

type GlobalMethodAdd = <T extends keyof SimplifiedTypeMap>(
  name: string,
  types: T[],
  method: () => SimplifiedTypeMap[T]
) => void;

interface MethodStore {
  [name: string]: {
    types: (keyof SimplifiedTypeMap)[];
    method: () => SimplifiedTypeMap[keyof SimplifiedTypeMap];
  };
}
Run Code Online (Sandbox Code Playgroud)

感谢 Typescript 引擎,最后一个参数(方法)的返回类型是从第二个参数(类型)中的项推断出来的,并且 int 强制函数的用户编写具有特定返回类型的方法

添加方法.ts

import { random } from "lodash-es";

export const methodStorage: MethodStore = {};

const addMethod: GlobalMethodAdd = (name, types, method) => {
  methodStorage[name] = { types, method …
Run Code Online (Sandbox Code Playgroud)

intellisense type-inference typescript visual-studio-code monaco-editor

2
推荐指数
1
解决办法
919
查看次数