Esk*_*kir 5 javascript date typescript
我最近在以下代码段中收到 Visual Studio Code 的“错误”警报:
someDateObject.toLocaleDateString('de-DE', Travel.dateOptions));
someDateObject.toLocaleDateString('de-DE', Travel.dateOptions));
Run Code Online (Sandbox Code Playgroud)
Travel.dateOptions 的定义如下:
public static dateOptions = { year: 'numeric', month: '2-digit', day: '2-digit' };
Run Code Online (Sandbox Code Playgroud)
这在过去 2 年的大部分时间里一直运行良好,但最近在 VSC 内打开课程时,它显示以下错误Travel.dateOptions:
Argument of type '{ year: string; month: string; day: string; }' is not assignable to parameter of
type 'DateTimeFormatOptions'.
Types of property 'year' are incompatible.
Type 'string' is not assignable to type '"numeric" | "2-digit"'. ts(2345)
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么。这可能是 VSC 的错误吗?一旦编译,代码似乎运行良好(并且一直运行良好) - 根据Date::toLocaleDateString()的文档,我在这里所做的似乎完全有效。
有任何想法吗?
小智 36
我刚刚遇到了同样的问题,我没有将 const 重新声明为 const (这感觉像代码味道),而是强制变量类型:
formatDT(sourceDate: Date) {
const options: Intl.DateTimeFormatOptions = { month: "long", day: 'numeric', year: 'numeric', hour: '2-digit', minute: "2-digit" };
return new Intl.DateTimeFormat("en-GB", options).format(new Date(sourceDate));
}
Run Code Online (Sandbox Code Playgroud)
Laz*_*vić 25
当您使用诸如 之类的文字初始化类属性时public foo = { bar: 'a' },它的类型将变为{ bar: string },即使您将其声明为readonly. TypeScript 故意不会使类型过于严格 ( { bar: 'a' })。
方法toLocaleDateString接受一个对象,其键year必须是'numeric'or类型'2-digit',但你的对象是类型string。
要使初始化对象的类型更具体,请使用as const:
public static dateOptions = { year: 'numeric', month: '2-digit', day: '2-digit' } as const;
Run Code Online (Sandbox Code Playgroud)
Mat*_*iao 20
按照您的代码示例,您必须显式声明DateTimeFormatOptions数据类型dateOptions
const dateOptions: Intl.DateTimeFormatOptions = {
year: 'numeric',
month: '2-digit',
day: '2-digit'
};
export const Travel = { dateOptions };
const someDateObject = new Date();
console.log(someDateObject.toLocaleDateString('de-DE', Travel.dateOptions));
Run Code Online (Sandbox Code Playgroud)
小智 7
包括Intl.DateTimeFormatOptions用于声明。
const options :Intl.DateTimeFormatOptions = {
year: 'numeric',
month: '2-digit',
day: 'numeric',
hour: '2-digit',
minute: '2-digit',
hour12: false
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1869 次 |
| 最近记录: |