【问题标题】:About typescript interface definition关于 typescript 接口定义
【发布时间】:2020-03-31 14:42:13
【问题描述】:

我有一个函数 A,它会返回函数 B。函数 B 的参数是对象 C。C 有一个名为 D 的属性,其类型是 T。

T 在我得到 B 时决定,这意味着我可以在调用 A 或其他方式时设置 T。

那么如何在 typescript 中定义呢?非常感谢。


我已经尝试过了,它会起作用。但这不是我想要的:

interface C<T> {
    d: T;
    e: number;
}

interface B<T> {
    (param: C<T>): void;
}

interface A<T> {
    (): B<T>;
}

const a: A<number> = () => ({d, e}) => {
    console.log(d, e)
};

我想要的东西可能是这样的:

const a: A = () => ({d, e}) => {
    console.log(d, e)
};
const b1 = a<number>();
const b2 = a<string>();

我对此一无所知。

【问题讨论】:

  • 请提供一些代码,到目前为止您尝试了什么?
  • @bugs 你好。我已经附加了一些代码。

标签: typescript interface definition


【解决方案1】:

您走在正确的道路上,我发现类型比接口更简洁:

interface C<T> {
    d: T;
    e: number;
}

type B<T> = (params: C<T>) => void

type A = <T>() => B<T>

// or inlined : type A = <T>() => (params: C<T>) => void

const a: A = () => ({d, e}) => {
    console.log(d, e)
};

const withNumber = a<number>();
const withString = a<string>();

【讨论】:

  • 嗨。感谢您的回答。我忘记了type 语法。谢谢你。 :) 但是当我打电话给 a 时,我想设置 T。我对此一无所知。
  • 对,我刚刚更新了答案以符合您的要求
  • 酷!非常感谢!似乎我将接口的泛型与传递泛型混为一谈。真的感谢!我会再看一下 typescript 中的那部分。
猜你喜欢
  • 2015-07-27
  • 2020-11-24
  • 2019-06-09
  • 2019-10-11
  • 1970-01-01
  • 2018-01-10
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多