簡體   English   中英

TypeScript:獲取動態鍵控 object 中值的類型簽名

[英]TypeScript: Getting the type signature of values in a dynamically keyed object

我想在類型 object 中引用值類型,我從庫中導入並且不控制。

我正在使用無服務器 TypeScript package,它提供了一種名為AWS的類型,如下所示:


{
  ...
  functions?: {
    [k: string]: {
      name: string;
      ...
    }
  }
}

我知道可以使用AWS["functions"]引用整個函數子對象的類型

我的問題是,如何以編程方式詢問該子對象的的子類型?

請參閱下面的代碼,其中“TYPE_HERE”指示我要在哪里填寫類型。

import type { AWS } from "@serverless/typescript";

export default (): TYPE_HERE => ({
  name: "",
  ...
});

當它作為動態鍵的 value 屬性存在時,我如何 state 使用根類型甚至類型AWS["functions"]的類型?

這應該有效:

interface AWS {
  functions?: {
    [k: string]: {
      name: string;
    }
  }
}

type FnType 
  = NonNullable<AWS["functions"]> extends { [K: string]: infer R } ? R : never

const d = (): FnType => ({
  name: "",
  dd: '', // error
});

TS游樂場

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM