Typescript,是否可以扩展没有某种类型的接口?

时间:2020-03-21 08:27:04

标签: reactjs typescript

import React from "react";

interface a_to_e {
  a?: string;
  b?: string;
  c?: string;
  d?: string;
  e?: string;
}

interface a_to_e_without_c extends a_to_e {
  // I'd like to implement a~e without c
}

function Child(props: a_to_e_without_c) {
  return (
    <>
      <div>child</div>
    </>
  );
}

function App() {
  return (
    <>
      <Child c="I'd like to throw compile error," />
    </>
  );
}

export default App;

除了某些特殊类型外,是否可以在打字稿中扩展接口?

当然可以通过创建自定义异常来实现

但是我想抛出 编译错误

当我的某些同事使用带有属性c的Child组件时。

有可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用打字稿的Omit实用程序

示例:

interface a {
  a: string,
  b: string,
  c: string
}

type without_c = Omit<a, "c">;

const variable_with_c: without_c = {
  a: "a",
  b: "b",
  c: "c" //compile error
}