如何使用打字稿在 Nativescript-vue 中传递对象而不是字符串?
How to pass object instead of string in Nativescript-vue with typescript?
我想实现 {N} Playground Code
中的 PromptDialog
import dialogs from "tns-core-modules/ui/dialogs";
export default {
methods: {
onButtonTap() {
console.log("Button was pressed");
prompt({
title: "Email Prompt",
message: "Provide your email address:",
okButtonText: "OK",
cancelButtonText: "Cancel",
defaultText: "name@domain.com",
inputType: dialogs.inputType.email
}).then(result => {
console.log(`Dialog result: ${result.result},
text: ${result.text}`);
});
}
},
}
但是 Vetur 给出了以下 Typescript 错误。
Argument of type '{ title: string; message: string; okButtonText: string; cancelButtonText: string; defaultText: string; inputType: string; }' is not assignable to parameter of type 'string'.
这只是 nativescript-vue prompt documentation 中的示例代码,但是 typescript 改编。
基本使用
forgotPassword() {
prompt('Your message to the user', 'Suggested user input').then(result => {
console.log(`Dialog result: ${result.result}, text: ${result.text}`);
});
}
Vetur 错误:
Property 'then' does not exist on type 'string'.
这是文档的误导。没有API叫提示。应该是dialogs.prompt。
正确示例
<script lang="ts">
import * as dialogs from "tns-core-modules/ui/dialogs";
export default {
methods: {
onButtonTap() {
console.log("Button was pressed");
dialogs.prompt({
title: "Email Prompt",
message: "Provide your email address:",
okButtonText: "OK",
cancelButtonText: "Cancel",
defaultText: "name@domain.com",
inputType: dialogs.inputType.email
}).then(result => {
console.log(`Dialog result: ${result.result},
text: ${result.text}`);
});
}
},
data() {
return {};
}
};
</script>
我想实现 {N} Playground Code
中的 PromptDialogimport dialogs from "tns-core-modules/ui/dialogs";
export default {
methods: {
onButtonTap() {
console.log("Button was pressed");
prompt({
title: "Email Prompt",
message: "Provide your email address:",
okButtonText: "OK",
cancelButtonText: "Cancel",
defaultText: "name@domain.com",
inputType: dialogs.inputType.email
}).then(result => {
console.log(`Dialog result: ${result.result},
text: ${result.text}`);
});
}
},
}
但是 Vetur 给出了以下 Typescript 错误。
Argument of type '{ title: string; message: string; okButtonText: string; cancelButtonText: string; defaultText: string; inputType: string; }' is not assignable to parameter of type 'string'.
这只是 nativescript-vue prompt documentation 中的示例代码,但是 typescript 改编。
基本使用
forgotPassword() {
prompt('Your message to the user', 'Suggested user input').then(result => {
console.log(`Dialog result: ${result.result}, text: ${result.text}`);
});
}
Vetur 错误:
Property 'then' does not exist on type 'string'.
这是文档的误导。没有API叫提示。应该是dialogs.prompt。 正确示例
<script lang="ts">
import * as dialogs from "tns-core-modules/ui/dialogs";
export default {
methods: {
onButtonTap() {
console.log("Button was pressed");
dialogs.prompt({
title: "Email Prompt",
message: "Provide your email address:",
okButtonText: "OK",
cancelButtonText: "Cancel",
defaultText: "name@domain.com",
inputType: dialogs.inputType.email
}).then(result => {
console.log(`Dialog result: ${result.result},
text: ${result.text}`);
});
}
},
data() {
return {};
}
};
</script>