如何转义特殊字符名称?
How can I escape special characters names?
我正在记录从 CSV 解析的数据,因此 属性 名称可能包含空格、#
等
如何记录它们?
/**
* @typedef {Object} EmployeeCsv
* @property {string} Emp#
* @property {string} First Name
*/
console.log(emp["Emp#"]);
[tsserver] Property 'Emp#' does not exist on type 'EmployeeCsv'. Did you mean 'Emp'? [E]
我试过 \
、'
和 "
,但它们似乎没有效果或导致“预期标识符”错误。
我能够使用 Typescript 4.3.5 在 Playground 中重现此内容。我无法使用您描述的 @typedef {Object} EmployeeCsv
语法使语法工作。与 jsdoc/jsdoc#1468 一样,似乎 VSCode 和 Typescript 可能不符合基于 unicode-escape 的规范。
/**
* @typedef {object} EmployeeCsv
* @property {string} Emp#
* @property {string} "First Name"
*/
function demo(/** @type EmployeeCsv */ emp) {
// fails
emp["Emp#"] = "abc";
emp["First Name"] = "def";
}
我能够使用 Closure Compiler wiki, omitted entirely from the @typedef
page on jsdoc.app 中描述的“新 @typedef
语法”。
/**
* @typedef {{
* "Emp#": string,
* "First Name": string,
* }}
*/
let EmployeeCsv2;
function demo2(/** @type EmployeeCsv2 */ emp) {
emp["Emp#"] = "abc";
emp["First Name"] = "def";
}
(请注意,这两个示例都让 TSC 在“JS 模式”下工作,相当于解析具有 .js
扩展名的文件。这是在左上角的 Config 设置中的 TS Playground 中设置的。)
当然,在Typescript文件中,你可以将JSDoc格式转换为Typescript接口定义。
interface EmployeeCsv {
"Emp#": string,
"First Name": string,
}
function demo(emp: EmployeeCsv) {
emp["Emp#"] = "abc";
emp["First Name"] = "def";
}
我正在记录从 CSV 解析的数据,因此 属性 名称可能包含空格、#
等
如何记录它们?
/**
* @typedef {Object} EmployeeCsv
* @property {string} Emp#
* @property {string} First Name
*/
console.log(emp["Emp#"]);
[tsserver] Property 'Emp#' does not exist on type 'EmployeeCsv'. Did you mean 'Emp'? [E]
我试过 \
、'
和 "
,但它们似乎没有效果或导致“预期标识符”错误。
我能够使用 Typescript 4.3.5 在 Playground 中重现此内容。我无法使用您描述的 @typedef {Object} EmployeeCsv
语法使语法工作。与 jsdoc/jsdoc#1468 一样,似乎 VSCode 和 Typescript 可能不符合基于 unicode-escape 的规范。
/**
* @typedef {object} EmployeeCsv
* @property {string} Emp#
* @property {string} "First Name"
*/
function demo(/** @type EmployeeCsv */ emp) {
// fails
emp["Emp#"] = "abc";
emp["First Name"] = "def";
}
我能够使用 Closure Compiler wiki, omitted entirely from the @typedef
page on jsdoc.app 中描述的“新 @typedef
语法”。
/**
* @typedef {{
* "Emp#": string,
* "First Name": string,
* }}
*/
let EmployeeCsv2;
function demo2(/** @type EmployeeCsv2 */ emp) {
emp["Emp#"] = "abc";
emp["First Name"] = "def";
}
(请注意,这两个示例都让 TSC 在“JS 模式”下工作,相当于解析具有 .js
扩展名的文件。这是在左上角的 Config 设置中的 TS Playground 中设置的。)
当然,在Typescript文件中,你可以将JSDoc格式转换为Typescript接口定义。
interface EmployeeCsv {
"Emp#": string,
"First Name": string,
}
function demo(emp: EmployeeCsv) {
emp["Emp#"] = "abc";
emp["First Name"] = "def";
}