web-dev-qa-db-ja.com

タイプ「日付」の引数は、タイプ「文字列」のパラメータに割り当てることができません

私はAngular2-Meteorプロジェクトに取り組んでおり、これを取得しています

タイプ「日付」の引数は、タイプ「文字列」のパラメーターに割り当てることができません。

この関数を作成して日付に値を設定すると、エラーが発生します。

start: startOfDay(new Date(attendance.dayAt)),

タイプをDateに設定しようとしましたが、このエラーを解決するにはどうすればよいですか?

10
Habib

同様の問題がありました。

調査の結果、3つの有用なリンクが見つかりました。

日付変数は機能しますが、関数は機能しません

文字列を日付の問題に変換する

パイプ 'DatePipe'の無効な引数 '日付形式'?

次に行ったのは、次のように「エクスポートクラス」コンポーネントで変数をDate型として宣言することです。

start: Date

その後、関数でこのように使用して、日付変数を設定しました。

start = new Date(Date.now());

受け取ったエラーを判断すると、関数「startOfDay()」が文字列を返すため、次のようにコードを変更する必要があると思います。

start: new Date(startOfDay(new Date(attendance.dayAt)))

これは、「開始」が日付の場合、関数new Date()を使用して日付を割り当てる必要があるためです。次に、日付は文字列を入力として取り、日付を返し、それを変数「start」に割り当てます。お役に立てれば :)

9
Egon Allison

Webサービスから日付値がJSON文字列として返され、TypeScriptの日付型プロパティに日付がキャストされる状況があります。これにより、コンパイル中に「タイプ「文字列」はタイプ「日付」に割り当てられない」エラーが表示されます。

私が見つけた回避策の1つは、クライアント側のプロパティを「:Date」ではなく「any」タイプとして定義することです。これにより、JSONを適切に日付にキャストでき、コンパイル中にエラーが表示されません。

0
iDubrovinsky

aPIから文字列として日付を取得する場合は、angular日付フィールドを変換する必要があります。

getUser(id: number): Observable<User> {
    return this.http.get<User>(this.baseUrl + 'users/' + id.toString())
    .pipe(
      map( user => {
        user.lastActive = new Date(user.lastActive);
        return user;
      })
    );
  }