Typescriptの厳密なタイプとrxjsフィルターおよびマップの組み合わせ

私は状況につまずいて、私はフィードバックを求めています。 次のコードを考えると、 import { Subject } from "rxjs"; import { first, map } from "rxjs/operators"; type Something = { prop: number; }; const source = new Subject<Something | undefined>(); source.asObservable().pipe(

TypeScriptのマップとセットでより厳密な入力を強制するにはどうすればよいですか?

私はこのように地図を作成する場合: (遊び場) const x = new Map(); const y = x.get("foo"); y.thisDoesntExist(); 最後の行(少なくとも厳密モード)でエラーが発生すると思います。代わりに、マップのタイプはMap<any, any>なので、警告は表示されない。同じことがSet<any>でも起こります。 私はJavaScriptプロジェクトを移植中なので、このようなケースはあちこちにあり、型がどこに欠けているのかを

Typescript Template Literalのinferキーワードを使用して、文から特定の部分を抽出しますか?

文を入力すると、スペースが1つまたは2つ含まれ 、${Verb}${one or two spaces}${Activity}構造を持っていると仮定して、どのように私はTypeScriptで Verb と Activity を抽出することができますか? type Split = ' ' | ' ' type ExtractVerb<S extends string> = S extends `${infer Verb}${Split}${infer Activit

Typescriptは、オブジェクトの配列から文字列リテラルの共用体型を作成します

私の目標は、オブジェクトの配列から文字列リテラル共用体型を作成することです。 配列から共用体型を作成する方法を知っています。 const genderArr = ["female", "male"] as const; type Gender = typeof genderArr[number]; // "female" | "male" オブジェクト内の配列に対して同じものを実現するにはどうすればよいですか? const QuestionnaireOptions = {

typesciptでインラインポリモーフィズムを処理する

型スクリプトでポリモーフィズムの実装を持っています。 enum empType { developer = '1', qa = '2', manager = '3' } interface IEmployee { type: empType; ID: string; name: string; projectId: string; } interface IEmployeeDeveloper extends IEmployee {

共用体型を関数パラメーターとして使用する方法

私は以下の例で、ユニオンタイプ(文字列または数字)を作成しました。次に、文字列または数値を入力として受け取る関数シグネチャを作成しました。しかし、今、私はこの関数の定義を使用することはできません type AB = string | number type X = (inp: AB) => void; const x: X = (inp: number) => { console.log('ok')}; // <-- ERROR const y: X = (inp: s

一般的で識別されたタイプ?

ちょっとアイデアが思い浮かびましたが、私はそれを入力する方法やそれが可能であっても分かりません。 firstプロパティをSomeTypeの何かにすることができるが、secondプロパティはTと同じにすることはできませんので、どのようにfirst型を定義できますか。 type SomeType<T> = { first: T; // any option based on T second: T; // everything on T except what `firs

列挙型に対するTypescriptチェックタイプ

私は2つのタイプを持っています、1つは列挙型です: enum Vehicle { Car = 'car', Plane = 'plane', } 2 つ目は、キーとして enum を使用する通常のオブジェクトです。 type VehicleProperties = { [Vehicle.Car]: { amountOfWheels: number }; [Vehicle.Plane]: { amountOfWings: number }; } どの

TypeScriptは、非構造化オブジェクトのタイプを認識しません

私はこのようにコレクションを取得するために基本的なFirebase呼び出しを行っています import { getFirestore, collection, getDocs } from "firebase/firestore"; import { Invoice } from "../models/Invoice"; const db = getFirestore(); export const getInvoicesCollection = async () =>

ジェネリック型からリターン型を推測する

特定の状況で型を推論して、入力パラメータに基づいて Box<T> または Tを取得したいのですが、代わりに Box<unknown> と不明になります。 私はW extends Wrap<T>の使い方のせいだと思いますが、これをより良く表現する方法がわかりません。 次のコード例を参照し 、boxResult と noBoxResult にカーソルを合わせると、推論された型が私にとって理想的でないことがわかります。 // Type definitions interface

Typescript:タイピングの動的キーを設定しようとしています

オブジェクトプロパティから特定の型を解決する型を設定しようとしています。 interface SubjectA { id: string title: string description: string | null quantity: number links: string[] } let subjectA: SubjectA = { id: "abc", title: "def", descriptio

型付きおよび動的型付きTypeScriptインターフェイス

私はTypescriptインターフェイスについて質問があります。私は次のインターフェイスを持っています: interface MappingConfiguration { [key: string]: Configuration; required: string[]; } interface Configuration { a: string; b: string; } 私はこれがうまくいかない理由を理解しています。MappingConfiguration

TypeScriptジェネリックスの優先順位

私は現在、次のコードを持っています: class Table<T,> { constructor(records: T[], columns: Column<T>[]) { ... } } class Column<T> { constructor(name: string, transformer: (item: T) => string) { ... } addTooltip(transformer: (item: T) => string): thi

計算されたプロパティ名を入力する方法は?

const foobar = <T extends 'a' | 'b' | 'c'>(name: T) => ({ [name]: name }) const result = foobar('a') // typeof result is { [x: string]: "a" } 計算されたプロパティ名を入力する方法は? foobar('a')の代わりに{ a: "a" } を返してほしい 。

交差型のニュートラル要素は何ですか?

共用体型の場合 、never はニュートラル要素、つまり never | T = Tです。 もう 1 つの方法は 、T=[T_1, ..., T_n]型の組の場合、共用体型 T_1 | ... | T_n が T[number]によって与えられるということです。空の組 []の場合 、[][number] は空の型セットの共用体型である never を生成します。 交差タイプのニュートラル要素は、どのタイプですか?つまり、任意のタイプ のN に対して N & T = T が生成

タイプに追加する方法

次のように宣言された型があります。 type colors = "green" | "blue" | "red"; 条件に基づいて追加する方法はありますか? とか: const shouldAppend = // some logic to return true / false. if (shouldAppend) { colors.append('yellow'); // invalid syntax } 型を次のように更新する必要があります。 color

TypeScriptは、必要な情報がすべて含まれていても、タイプを判別しません。

私はTypeScriptタイプでこの問題に遭遇しました。同じインターフェイスの異なるプロパティに基づく条件付きの型を使用して、1 つのプロパティの型を決定しています。ここでは、FruitBasketのプロパティslicerはAppleSlicerまたはBananaSlicerに応じてtypeのいずれかになります。 関数testを見ると、FruitBasketのインスタンスを受け取ります。だから、私はtypeがそのうちの1つに等しいことを確認することによって型を絞り込みますが、

徹底的な列挙型チェックを使用したTypeScriptインターフェイスの入力

私は列挙型を持っており、私は値がキーに固有である私のインターフェイスのキーとして列挙型の各値をしましょう。 例: enum Fruits { Apple = "Apple", Banana = "Banana", } // EDIT: These slicers can have completely different shapes. interface AppleSlicer { foo: () => string } interface BananaSlice

typescriptはインターフェイスのキーを動的に呼び出すことを許可しますか

私はインターフェイスを持っています: interface MyInterface { field_1 : string field_2 : string // ... other fields with a certain number } そして、私はMyInterfaceのインスタンスを受け取り、このオブジェクトの属性の値を動的に取得する必要があるgetter関数を持っています const myFactory = (myInstance:MyInter