Typescript 中是否有 base64 编码图像的类型?
Is there a type for base64 encoded images in Typescript?
作为 Typescript 菜鸟,我正在尝试尽可能准确地键入所有内容,作为学习过程的一部分。
我有一个 lqip
(低质量图像占位符)属性 来自 CMS,它应该是 base64 编码图像。明明是一个字符串,但是把它打成一个字符串感觉有点不准确。
mainImage: Schema.Post["mainImage"] & {
// can I be more precise? It should be always a base64 encoded image, not just a generic string…
// e.g. "data:image/jpeg;base64,/9j/2wBDAAYEB…"
lqip: string
}
Typescript中有base64编码图片的类型吗?我已广泛尝试 google,但我只找到了有关 atob
/btoa
转换的主题,而不是类型本身。谢谢!
我认为没有,但您可以创建自己的类型,它是字符串类型的别名,因此当您查看代码时,可以消除常规字符串和基本类型之间的歧义。
type Base64 = string
mainImage: Schema.Post["mainImage"] & {
lqip: Base64
}
可以在这里给你额外的安全,而 TypeScript 本身不支持它们,可以一起破解一些东西
type Opaque<T, K extends string> = T & { __typename: K }
type Base64 = Opaque<string, "base64">
const decodeBase64 = (base64String: Base64) => {
return Buffer.from(base64String, "base64").toString("utf8")
}
const str = "a"
decodeBase64(str) // errors
const str2 = "a" as Base64
decodeBase64(str2) // valid
您现在可以编写类型保护或运行时检查并断言字符串是 Base64 只是为了更加安全
对于那些仍在寻找答案的人,您可以创建自己的类型
type Base64<imageType extends string> = `data:image/${imageType};base64${string}`
const base64: Base64<'png'> = 'data:image/png;base64test...'
你可以try here
作为 Typescript 菜鸟,我正在尝试尽可能准确地键入所有内容,作为学习过程的一部分。
我有一个 lqip
(低质量图像占位符)属性 来自 CMS,它应该是 base64 编码图像。明明是一个字符串,但是把它打成一个字符串感觉有点不准确。
mainImage: Schema.Post["mainImage"] & {
// can I be more precise? It should be always a base64 encoded image, not just a generic string…
// e.g. "data:image/jpeg;base64,/9j/2wBDAAYEB…"
lqip: string
}
Typescript中有base64编码图片的类型吗?我已广泛尝试 google,但我只找到了有关 atob
/btoa
转换的主题,而不是类型本身。谢谢!
我认为没有,但您可以创建自己的类型,它是字符串类型的别名,因此当您查看代码时,可以消除常规字符串和基本类型之间的歧义。
type Base64 = string
mainImage: Schema.Post["mainImage"] & {
lqip: Base64
}
type Opaque<T, K extends string> = T & { __typename: K }
type Base64 = Opaque<string, "base64">
const decodeBase64 = (base64String: Base64) => {
return Buffer.from(base64String, "base64").toString("utf8")
}
const str = "a"
decodeBase64(str) // errors
const str2 = "a" as Base64
decodeBase64(str2) // valid
您现在可以编写类型保护或运行时检查并断言字符串是 Base64 只是为了更加安全
对于那些仍在寻找答案的人,您可以创建自己的类型
type Base64<imageType extends string> = `data:image/${imageType};base64${string}`
const base64: Base64<'png'> = 'data:image/png;base64test...'
你可以try here